import lxml.html
strings = """<p> <!--startprint-->xyz <br>
xyz <br> xyz </p>"""
root=lxml.html.document_fromstring(strings)
for e in root.iter() :
print(e.tag)要打印所有元素标记值,请执行以下操作。
html
body
p
<cyfunction Comment at 0x7f6819bb11b8>
br
brhtml字符串中的注释是<!--startprint-->,它的标记值是<cyfunction Comment at 0x7f6819bb11b8>,我想将<!--startprint-->的标记值与<cyfunction Comment at 0x7f6819bb11b8>进行比较。
import lxml.html
strings = """<p> <!--startprint-->xyz <br>
xyz <br> xyz </p>"""
root=lxml.html.document_fromstring(strings)
for e in root.iter() :
print(e.tag)
print(e.tag == "<cyfunction Comment at 0x7f6819bb11b8>")其结果如下:
html
False
body
False
p
False
<cyfunction Comment at 0x7f6819bb11b8>
False
br
False
br
False原因如下:
html
False
body
False
p
False
<cyfunction Comment at 0x7f6819bb11b8>
True
br
False
br
False对于<!--startprint-->,标记值是<cyfunction Comment at 0x7f6819bb11b8>,为什么是<cyfunction Comment at 0x7f6819bb11b8> != <cyfunction Comment at 0x7f6819bb11b8>
真是一个大笑话?
发布于 2017-06-28 12:02:59
不确定这是否能满足您的要求,但是您可以获得函数名,然后进行比较,也就是说,下面的函数Comment是如何实现它的一个示例。
>>> for e in root.iter() :
... try:
... e.tag.__name__
... except:
... pass
...
>>> 'Comment'您可以匹配字符串,就好像它是一个函数,它是一个名为commnet的函数。
我不认为函数对象可以用这种方式进行比较,尽管您可以使用它们的属性来比较它们,但是不能将整个对象与其他对象进行比较。
https://stackoverflow.com/questions/44801696
复制相似问题