我是python新手,请像对待我一样对待我。 当我尝试将XML内容转换为字典列表时,我得到了输出,但并没有达到预期效果,并且尝试了很多方法
XML内容:
<project>
<panelists>
<panelist panelist_login="pradeep">
<login/>
<firstname/>
<lastname/>
<gender/>
<age>0</age>
</panelist>
<panelist panelist_login="kumar">
<login>kumar</login>
<firstname>kumar</firstname>
<lastname>Pradeep</lastname>
<gender/>
<age>24</age>
</panelist>
</panelists>
</project>
我使用的代码:
import xml.etree.ElementTree as ET
tree = ET.parse(xml_file.xml) # import xml from
root = tree.getroot()
Panelist_list = []
for item in root.findall('./panelists/panelist'): # find all projects node
Panelist = {} # dictionary to store content of each projects
panelist_login = {}
panelist_login = item.attrib
Panelist_list.append(panelist_login)
for child in item:
Panelist[child.tag] = child.text
Panelist_list.append(Panelist)
print(Panelist_list)
输出:
[{
'panelist_login': 'pradeep'
}, {
'login': None,
'firstname': None,
'lastname': None,
'gender': None,
'age': '0'
}, {
'panelist_login': 'kumar'
}, {
'login': 'kumar',
'firstname': 'kumar',
'lastname': 'Pradeep',
'gender': None,
'age': '24'
}]
我期待下面的输出
[{
'panelist_login': 'pradeep',
'login': None,
'firstname': None,
'lastname': None,
'gender': None,
'age': '0'
}, {
'panelist_login': 'kumar'
'login': 'kumar',
'firstname': 'kumar',
'lastname': 'Pradeep',
'gender': None,
'age': '24'
}]
我在xml树上提出了很多堆栈溢出问题,但仍然没有帮到我
欢迎提供任何帮助/建议
您的代码将带有标记属性的dict
panelist_login
附加到列表中,在这一行:Panelist_list.append(panelist_login)
与Panelist
dict分开。因此,对于每个<panelist>
标记,代码将附加两个dict:一个标记属性的dict和一个子标记的dict。在循环内部有2个append()
调用,这意味着每次通过循环时列表中有2个项目但是实际上,您希望每个
<panelist>
标记都有一个dict,并且希望tag属性在Panelist
dict中显示为,就好像它也是一个子标记一样因此,使用单个dict,并使用标记属性更新
Panelist
dict,而不是将标记属性保留在单独的dict中我得到了这个输出,我想这就是你的想法:
相关问题 更多 >
编程相关推荐