我正在使用启用了 --xmlfilter 选项的LanguageTool (LT) 来对 HTML 文件进行拼写检查。这会强制 LanguageTool 在运行拼写检查之前去除所有标签。
这也意味着所有报告的字符位置都是关闭的,因为 LT 没有“看到”标签。
例如,如果我检查以下 HTML 片段:
<p>This is kin<b>d</b> o<i>f</i> a <b>stupid</b> question.</p>
LanguageTool 会将其视为纯文本句子:
This is kind of a stupid question.
并返回以下消息:
<error category="Grammar" categoryid="GRAMMAR" context=" This is kind of a stupid question. " contextoffset="24" errorlength="9" fromx="8" fromy="8" locqualityissuetype="grammar" msg="Don't include 'a' after a classification term. Use simply 'kind of'." offset="24" replacements="kind of" ruleId="KIND_OF_A" shortmsg="Grammatical problem" subId="1" tox="17" toy="8"/>
(在这个特定的例子中,LT 已经标记了“kind of a”。)
由于搜索字符串可能包含在标签中并且可能会出现多次,因此我无法进行简单的索引搜索。
在 HTML 文件中可靠地定位任何给定文本字符串的最有效 Python 解决方案是什么?(LT 返回一个近似的字符位置,根据标签的数量以及标记单词之前和之后的单词,可能会偏离 10-30%。)
即我需要做一个忽略所有标签的搜索,但将它们包含在字符位置计数中。
在这个特定的例子中,我必须找到“kind of a”并找到字母 k 的位置:
kin<b>d</b> o<i>f</i>a