首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能将标记值与同一个字符串进行比较?

为什么不能将标记值与同一个字符串进行比较?
EN

Stack Overflow用户
提问于 2017-06-28 11:55:58
回答 1查看 132关注 0票数 0
代码语言:javascript
复制
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)

要打印所有元素标记值,请执行以下操作。

代码语言:javascript
复制
html
body
p
<cyfunction Comment at 0x7f6819bb11b8>
br
br

html字符串中的注释是<!--startprint-->,它的标记值是<cyfunction Comment at 0x7f6819bb11b8>,我想将<!--startprint-->的标记值与<cyfunction Comment at 0x7f6819bb11b8>进行比较。

代码语言:javascript
复制
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>")

其结果如下:

代码语言:javascript
复制
html
False
body
False
p
False
<cyfunction Comment at 0x7f6819bb11b8>
False
br
False
br
False

原因如下:

代码语言:javascript
复制
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>

真是一个大笑话?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 12:02:59

不确定这是否能满足您的要求,但是您可以获得函数名,然后进行比较,也就是说,下面的函数Comment是如何实现它的一个示例。

代码语言:javascript
复制
>>> for e in root.iter() :
...     try:
...         e.tag.__name__
...     except:
...         pass
... 
>>> 'Comment'

您可以匹配字符串,就好像它是一个函数,它是一个名为commnet的函数。

我不认为函数对象可以用这种方式进行比较,尽管您可以使用它们的属性来比较它们,但是不能将整个对象与其他对象进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44801696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档