Xml 如何在Python中使用ElementTree解析来自同一标记的值?
我正在使用python解析XML文件,但我遇到了一个问题。我得到的是字典形式的值,但是如果有两个或更多相同的值,那么它们就不会重复。我肯定有办法解决这个问题,但我对python和解析XML还不太熟悉 以下是XML的一个示例:Xml 如何在Python中使用ElementTree解析来自同一标记的值?,xml,parsing,python-3.6,Xml,Parsing,Python 3.6,我正在使用python解析XML文件,但我遇到了一个问题。我得到的是字典形式的值,但是如果有两个或更多相同的值,那么它们就不会重复。我肯定有办法解决这个问题,但我对python和解析XML还不太熟悉 以下是XML的一个示例: <Root> <Child1> </Child1> <Child2> <Data DId = "1"> <Group ID = "">
<Root>
<Child1>
</Child1>
<Child2>
<Data DId = "1">
<Group ID = "">
<Sport Name="Cricket" Team="6" />
<Sport Name="Football" Team="6" />
<Sport Name="Hockey" Team="5" />
</Group>
</Data>
<Data DId = "2">
<Group ID = "">
<Sport Name="Rugby" Team="6" />
<Sport Name="Baseball" Team="10" />
<Sport Name="Swimming" Team="6" />
</Group>
</Data>
</Child2>
</Root>
但我无法获得每项运动的团队价值。试试这个库
from simplified_scrapy import SimplifiedDoc, utils
xml = '''
<Root>
<Child1>
</Child1>
<Child2>
<Data DId = "1">
<Group ID = "">
<Sport Name="Cricket" Team="6" />
<Sport Name="Football" Team="6" />
<Sport Name="Hockey" Team="5" />
</Group>
</Data>
<Data DId = "2">
<Group ID = "">
<Sport Name="Rugby" Team="6" />
<Sport Name="Baseball" Team="10" />
<Sport Name="Swimming" Team="6" />
</Group>
</Data>
</Child2>
</Root>
'''
# xml = utils.getFileContent('test.xml')
dict1 = {}
doc = SimplifiedDoc(xml)
datas = doc.selects('Data')
for i in datas:
dic = {}
for j in i.selects('Sport'):
dic[j['Name']] = j['Team']
dict1[i['DId']] = dic
print(dict1)
谢谢,@u train有没有办法将这些值用“Did”值分开,就像我想得到每个“Group”标记中存在的标记计数一样?@ArenMayank我更改了答案。你认为这是你想要的吗?太好了,谢谢你的建议。
from simplified_scrapy import SimplifiedDoc, utils
xml = '''
<Root>
<Child1>
</Child1>
<Child2>
<Data DId = "1">
<Group ID = "">
<Sport Name="Cricket" Team="6" />
<Sport Name="Football" Team="6" />
<Sport Name="Hockey" Team="5" />
</Group>
</Data>
<Data DId = "2">
<Group ID = "">
<Sport Name="Rugby" Team="6" />
<Sport Name="Baseball" Team="10" />
<Sport Name="Swimming" Team="6" />
</Group>
</Data>
</Child2>
</Root>
'''
# xml = utils.getFileContent('test.xml')
dict1 = {}
doc = SimplifiedDoc(xml)
datas = doc.selects('Data')
for i in datas:
dic = {}
for j in i.selects('Sport'):
dic[j['Name']] = j['Team']
dict1[i['DId']] = dic
print(dict1)
{'1': {'Cricket': '6', 'Football': '6', 'Hockey': '5'}, '2': {'Rugby': '6', 'Baseball': '10', 'Swimming': '6'}}