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

时间:2015-01-19 02:49:54

标签: python lxml.html

鉴于(un)有序列表,我必须检查是否使用了特殊的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-condition的计算结果为False。 如何检查(&amp;#8594;)“→”是否存在于elem.text?

2 个答案:

答案 0 :(得分:1)

您需要搜索

的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

答案 1 :(得分:1)

...如果你想要替换这个角色,请像这样输入“re”:

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