在python中读取xml,在下标中包含事例计数

2024-09-30 20:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我仍在学习python,我一直在阅读这个xml文件。有人能帮忙吗,谢谢

<traitment>
    <person_1>
        <resp> 129</resp>
        <positions>
            <p>1 2 3</p>
            <p>4 5 7 </p>
            <p>2 1 8</p>
        </positions>
    </person_1>
    <person_2>
        <resp> 150</resp>
        <positions>
            <p>0 1 2</p>
            <p>4 0 5 </p>
            <p>1 2 4</p>
        </positions>
    </person_2>
    <person_3>
        <resp>89 129</resp>
        <positions>
            <p>1 4 5</p>
            <p>1 2 3</p>
            <p>6 8 9</p>
        </positions>
    </person_3>
</traitment>

输出应该是同一个人的3行,person1,具有相同的resp 129和3个位置(p1、p2、p3)

谢谢你的帮助


Tags: 文件xmlresppersonp2p3p1person1
1条回答
网友
1楼 · 发布于 2024-09-30 20:27:49

下面是一些代码,它们将为您提供所需的数据,但它将有助于您了解您想要实现的确切内容:您希望结果的格式是什么,目的是什么

import xml.etree.ElementTree as ET

my_xml_tree = ET.parse('sample.xml')
root = my_xml_tree.getroot()

persons_rows = []
for person_node in root:
    new_person = {}
    persons_rows.append(new_person)
    new_person['person'] = person_node.tag
    new_person['resp'] = person_node.find('resp').text
    new_person['positions'] = []
    for position in person_node.find('positions'):
        new_person['positions'].append(position.text)

for person in persons_rows:
    print(f"person: {person['person']}, resp: {person['resp']}, positions: {person['positions']}")

上述代码为sample.xml文件生成以下输出:

person: person_1, resp:  129, positions: ['1 2 3', '4 5 7 ', '2 1 8']
person: person_2, resp:  150, positions: ['0 1 2', '4 0 5 ', '1 2 4']
person: person_3, resp: 89 129, positions: ['1 4 5', '1 2 3', '6 8 9']

相关问题 更多 >