gpt4 book ai didi

python - Python 的 xml.etree.ElementTree 叶元素的意外 bool 行为

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:07 31 4
gpt4 key购买 nike

我在使用 Python 2.6.5 xml.etree.ElementTree 库时遇到了一些问题。特别是,如果我像下面这样设置一个简单的 xml 元素

>>> import xml.etree.ElementTree as etree
>>> xml = etree.fromstring("<a><b><c>xy</c></b></a>")

访问内部元素节点时,我对库没有任何问题,例如:

>>> etree.tostring(xml.find('b'))
'<b><c>xy</c></b>'
>>> xml.find('b') == None
False
>>> bool(xml.find('b'))
True

但是,我遇到了一个奇怪的叶元素节点的 bool 值解释,请参阅:

>>> etree.tostring(xml.find('b/c'))
'<c>xy</c>'
>>> xml.find('b/c') == None
False
>>> bool(xml.find('b/c'))
False

请注意,在最后一个命令中,显然非 None 的元素 xml.find('b/c') 的计算结果为 False。这特别烦人,因为我不能使用成语

>>> leaf = xml.find('b/c'):
>>> if leaf:
>>> do_stuff(leaf)

检查叶元素是否存在。 (我必须明确检查 'xml.find('b/c') != None'。)

有人可以解释这种(对我来说出乎意料的)行为吗?

最佳答案

好的,不好意思,提交这个问题后我在Python文档中找到了解决方案的明确说明:http://docs.python.org/release/2.6.5/library/xml.etree.elementtree.html#the-element-interface , 在本节的末尾。

Caution: Because Element objects do not define a nonzero() method, elements with no subelements will test as False.

对于给您带来的不便,我们深表歉意。

关于python - Python 的 xml.etree.ElementTree 叶元素的意外 bool 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11669001/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com