gpt4 book ai didi

python - 在 python 2.6.6 中获取子子的子值

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:15 24 4
gpt4 key购买 nike

我有如下所示的 XML,并希望提取带有附件名称的警报 ID。

<alarms formatVersion="1">
<alarm id="4">
<startDate>2018-06-19 08:10:05.0 UTC</startDate>
<alarmDate>2018-06-19 08:10:05.0 UTC</alarmDate>
<type>1234567</type>
<intense>50</intense>
<attachments>
<attachment filename="20180619.partials.55.1234567.1.csv.gz" mimeType="text/csv"/>
</attachments>
</alarm>
<alarm id="5">
<startDate>2018-05-19 09:10:05.0 UTC</startDate>
<alarmDate>2018-05-19 08:10:05.0 UTC</alarmDate>
<type>1234567</type>
<intense>50</intense>
<attachments>
<attachment filename="20180519.payers.12.1015500.1.csv.gz" mimeType="text/csv"/>
</attachments>
</alarm>
<alarm id="5">
<startDate>2018-05-19 09:10:05.0 UTC</startDate>
<alarmDate>2018-05-19 08:10:05.0 UTC</alarmDate>
<type>1234567</type>
<intense>50</intense>
</alarm>
</alarms>

尝试过的代码:

import xml.etree.ElementTree as ET
import gzip

input=gzip.open('input-xml.gz','r')
tree=ET.parse(input)
root=tree.getroot()


for lsofals in root.findall("./alarm/"):
print lsofals.attrib
for atts in lsofals.findall('attachments'):
print atts.getchildren()
for aname in atts.findall('attachment filename'):
print aname.attrib

所需的示例输出:

{4: 20180619.partials.55.1234567.1.csv.gz, 5:20180519.payers.12.1015500.1.csv.gz}

使用目前的代码,我能够获取警报的值,但无法获取附件的值,我对 python 很陌生。检索附件的值后我需要形成一个字典,我将在解决这个问题后工作一次。

最佳答案

使用简单的元素路径:

import xml.etree.ElementTree as ET
import gzip

input = gzip.open('input-xml.gz','r')
tree = ET.parse(input)
root = tree.getroot()

for att in root.findall("./alarm/attachments/attachment"):
print(att.get('filename'))

输出:

20180619.partials.55.1234567.1.csv.gz
20180519.payers.12.1015500.1.csv.gz

如果您需要将其作为字典获取:

...
d = {}
for alarm in root.findall("./alarm"):
for att in alarm.findall("attachments/attachment"):
d[alarm.get('id')] = att.get('filename')

print(d)

输出:

{'4': '20180619.partials.55.1234567.1.csv.gz', '5': '20180519.payers.12.1015500.1.csv.gz'}

关于python - 在 python 2.6.6 中获取子子的子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167985/

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