在 lxml.html 个元素的文本中搜索特殊的 HTML 个字符

Search for special HTML characters in text of lxml.html elements

给定一个(未)排序的列表,我必须检查是否使用了特殊的 HTML 箭头(并将它们替换为 Latex 箭头)。 lxml.html 是一项要求。

我一直在修修补补,但后来无法通过以下内容:

import lxml.html

my_string = "<li>I have a dream &#8594; Hello!</li>"
elem = lxml.html.fromstring(my_string)

if "&#8594;" in my_string:    # True
    print("foo")

if "&#8594;" in elem.text:    # False
    print("bar")

我无法理解为什么第二个 if 条件的计算结果为 False。 如何检查 elem.text 中是否存在 (→)“→”?

您需要搜索 :

的 unicode 表示
>>> s = u"→"
>>> s
u'\u2192'

>>> import lxml.html
>>> 
>>> my_string = "<li>I have a dream &#8594; Hello!</li>"
>>> elem = lxml.html.fromstring(my_string)
>>> 
>>> if u'\u2192' in elem.text:
...     print("bar")
... 
bar

...如果您要替换字符,请像这样导入 "re":

import re
re.sub(u'\u2192', '&rarr;', my_string)