gpt4 book ai didi

python xml 解析 (minidom)

转载 作者:行者123 更新时间:2023-12-01 05:25:39 26 4
gpt4 key购买 nike

我需要从此 XML 文件读取数据。我不知道如何从这个 XML 文件中读取数据 aaaaa、bbbbb、ccccc、ddddd、eeeee、fffff 和 ggggg。

<Episode>
<Section type="report" startTime="0" endTime="10">
<Turn startTime="0" endTime="2.284" speaker="spk1">
<Sync time="0"/>
aaaaa
<Sync time="0.93"/>
bbbbb
</Turn>
<Turn speaker="spk2" startTime="2.284" endTime="6.458">
<Sync time="2.284"/>
ccccc
<Sync time="3.75"/>
ddddd
<Sync time="4.911"/>
eeeee
</Turn>
<Turn speaker="spk3" startTime="6.458" endTime="10">
<Sync time="6.458"/>
fffff
<Sync time="8.467"/>
ggggg
<Sync time="9.754"/>

</Turn>
</Section>
</Episode>

我写了这段代码:

# -*- coding: UTF-8-*-

from xml.etree import ElementTree as ET
import os
from xml.dom import minidom

dom = minidom.parse("aaa.trs")

conference=dom.getElementsByTagName('Turn')
for node in conference:
conf_name=node.getAttribute('speaker')
print conf_name
sync=node.getElementsByTagName('Sync')
for s in sync:
s_name=s.getAttribute('time')
print s_name

输出是:

sp1
sp2
sp3

但是输出应该是:

sp1
aaaaa
bbbbb
sp2
ccccc
ddddd
eeeee
sp3
fffff
ggggg

有什么建议吗?谢谢。

最佳答案

一种方法是获取每个 Sync 节点的 nextSibling:

conference = dom.getElementsByTagName('Turn')
for node in conference:
conf_name = node.getAttribute('speaker')
print conf_name
sync = node.getElementsByTagName('Sync')
for s in sync:
print s.nextSibling.nodeValue.strip()

打印:

spk1
aaaaa
bbbbb
spk2
ccccc
ddddd
eeeee
spk3
fffff
ggggg

此外,您还可以通过获取每个 Sync 节点的 tail 来使用 ElementTree 获得相同的结果:

tree = ET.parse("aaa.trs")
for turn in tree.findall('.//Turn'):
print turn.attrib.get('speaker')
for sync in turn.findall('.//Sync'):
print sync.tail.strip()

希望有帮助。

关于python xml 解析 (minidom),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380890/

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