gpt4 book ai didi

python - 如何解析按特定标签 ID 分组的 XML

转载 作者:行者123 更新时间:2023-12-01 06:47:02 24 4
gpt4 key购买 nike

我有以下 xml 文件,我想按表 ID 对其进行分组。

xml = """
<Tables Count="19">
<Table Id="1" >
<Data>
<Cell>
<Brush/>
<Text>AA</Text>
<Text>BB</Text>
</Cell>
</Data>
</Table>

<Table Id="2" >
<Data>
<Cell>
<Brush/>
<Text>CC</Text>
<Text>DD</Text>
</Cell>
</Data>
</Table>
</Tables>
"""

我想解析它并得到类似的东西。

enter image description here

我尝试了以下方法,但无法弄清楚。

from lxml import etree

tree = etree.fromstring(xml)

users = {}
for user in tree.xpath("//Tables"):
name = user.xpath("Table")[0].text
users[name] = []
for group in user.xpath("Data/Cell/Text"):
users[name].append(group.text)

print (users)

是否可以得到上面的结果?如果是这样,有人可以帮我做到这一点吗?我真的很感谢你的努力。

最佳答案

您需要将 xpath 查询更改为:

from lxml import etree

tree = etree.fromstring(xml)

users = {}
for user in tree.xpath("//Tables/Table"):
# ^^^
name = user.attrib['Id']
users[name] = []
for group in user.xpath(".//Data/Cell/Text"):
# ^^^
users[name].append(group.text)

print (users)

...并使用 attrib 字典。
这将为您的字符串产生:

{'1': ['AA', 'BB'], '2': ['CC', 'DD']}

<小时/>如果您喜欢“单行话”,您甚至可以这样做:

users = {name: [group.text for group in user.xpath(".//Data/Cell/Text")]
for user in tree.xpath("//Tables/Table")
for name in [user.attrib["Id"]]}

关于python - 如何解析按特定标签 ID 分组的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180687/

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