gpt4 book ai didi

Python XML 解析器无法获取所有文本

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

我有以下 XML 源。

<a>
<b>
first
</b>
second
</a>

我尝试用 python 解析它以获取文本并将整个文本组合成一个字符串,如 firstsecond 。为此我有以下脚本

import xml.etree.ElementTree as ET

top = ET.fromstring(myXml)
for a in top.iter('a'):
s = ''
if a.text:
s += a.text
else:
for b in a.iter('b'):
if b.text:
s += b.text
print s

但是脚本只打印第一个元素 first 。第二个似乎不知何故迷路了。当我在 <a></a> 中有两个字符串时它就起作用了或两者都在 <b></b>

<a>
firstsecond
</a>

打印 firstsecond

<a>
<b>
first
</b>
<b>
second
</b>
</a>

打印 firstsecond

当第二个字符串位于同一个 <a></a> 时,我是否缺少一些东西来取出它?作为<b></b> ?或者这对 etree 来说是不可能的,我必须重新打包它? XML 已给出,因此我无法更改源。

感谢您的帮助。

最佳答案

b.tail 将在第一个示例中包含 second 。结束标记之后的文本在 ElementTree 中被视为 tail。实际上它也会包含空格,并且更像 \n secondary\n

考虑一个格式良好的 XML 数据 block :

<a>
<b>first</b>
<b>second</b>
</a>

在这里,您将在 b.text 中获得数据字段,并在 tail 中获得空白格式,这些很容易被忽略。

关于Python XML 解析器无法获取所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212274/

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