gpt4 book ai didi

python - 如何收集同一元素级别的文本节点?

转载 作者:行者123 更新时间:2023-12-01 09:25:18 24 4
gpt4 key购买 nike

下面是示例 xml。我正在研究 xml.etree.ElementTree 模块而不是 lxml。

<data>
<AAA>
<CCC>
<BBB>This</BBB>
</CCC>
<CCC>
<BBB>is</BBB>
</CCC>
<CCC>
<BBB>test1</BBB>
</CCC>
</AAA>

<AAA>
<CCC>
<BBB>This is test</BBB>
</CCC>
</AAA>

<AAA>
<CCC>
<BBB>222222</BBB>
</CCC>
<CCC>
<BBB>333333</BBB>
</CCC>
</AAA>

<AAA>
<BBB>
<CCC>This is test</CCC>
</BBB>
</AAA>
</data>

我正在尝试收集 AAA 元素下 CCC 下 BBB 的所有文本。但我不知道为什么它不起作用。启动时没有错误,但未收集文本。我想知道为什么这段代码不能很好地工作。

BBB_collect = ''.join(BBB.itertext())

请检查下面

import xml.etree.ElementTree as ET
import re

f1 = open ("C:\\test\\Data.xml","r",encoding="utf=8")
f2 = open ("C:\\test\\output.xml","wt",encoding="utf=8")
doc = ET.parse("C:\\test\\Data.xml")
root = doc.getroot()
a = 0

try:
while True :
AAA = root.findall('AAA')[a]
for CCC in AAA.findall('CCC'):
for BBB in CCC.findall('BBB'):
BBB_collect = ''.join(BBB.itertext())
print(BBB_collect)
print('===============')
a = a+1
except IndexError :
pass

你能给我一些建议吗?这是怎么回事?

最终,这是我的目标。

<data>
<AAA>
<CCC>
<BBB>Thisistest1</BBB>
</CCC>
</AAA>

<AAA>
<CCC>
<BBB>This is test</BBB>
</CCC>
</AAA>

<AAA>
<CCC>
<BBB>222222333333</BBB>
</CCC>
</AAA>

<AAA>
<BBB>
<CCC>This is test</CCC>
</BBB>
</AAA>
</data>

最佳答案

这可能会有所帮助。

演示:

import xml.etree.ElementTree as ET
doc = ET.fromstring(data)

for AAA in doc.findall('AAA'):
bText = ""
for CCC in AAA.findall('CCC'):
for BBB in CCC.findall('BBB'):
bText += BBB.text
print(bText)

输出:

Thisistest1
This is test
222222333333
This is test

关于python - 如何收集同一元素级别的文本节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463394/

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