gpt4 book ai didi

Python XPath 包含缺失的元素

转载 作者:行者123 更新时间:2023-11-30 23:09:48 26 4
gpt4 key购买 nike

<tree>
<item>
<element1>somedata</element1>
<element2>moredata</element2>
<element3>data?</element3>
<optional_element>data!</optional_element>
</item>
<item>
<element1>somedata</element1>
<element2>moredata</element2>
<element3>data?</element3>
</item>
<item>
<element1>somedata</element1>
<element2>moredata</element2>
<element3>data?</element3>
<optional_element>data!</optional_element>
</item>
<item>
<element1>somedata</element1>
<element2>moredata</element2>
<element3>data?</element3>
</item>
</tree>

我有一个像这样的 XML 文档,我想要完成的是获得这种输出:["data!", "", "data!", ""] 而不仅仅是 ["data!", "data!"]
到目前为止我已经尝试过this方法但无法使其工作(列表仍将仅包含存在的元素)。

最佳答案

我会使用findtext()并指定默认:

[item.findtext("optional_element", default="") for item in tree.findall("item")]

演示(使用lxml):

>>> from lxml import etree
>>>
>>> data = """<?xml version="1.0" encoding="utf-8"?>
... <tree>
... <item>
... <element1>somedata</element1>
... <element2>moredata</element2>
... <element3>data?</element3>
... <optional_element>data!</optional_element>
... </item>
... <item>
... <element1>somedata</element1>
... <element2>moredata</element2>
... <element3>data?</element3>
... </item>
... <item>
... <element1>somedata</element1>
... <element2>moredata</element2>
... <element3>data?</element3>
... <optional_element>data!</optional_element>
... </item>
... <item>
... <element1>somedata</element1>
... <element2>moredata</element2>
... <element3>data?</element3>
... </item>
... </tree>
... """
>>>
>>> tree = etree.fromstring(data)
>>> print [item.findtext("optional_element", default="") for item in tree.findall("item")]
['data!', '', 'data!', '']

关于Python XPath 包含缺失的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971215/

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