我有一个python脚本,用于解析包含部分信息的XML文件以及脚本应该对信息执行的命令。Python中的多维字典
<?xml version="1.0"?>
<servicexml>
<action>
<command>Add</command>
<partnumber>1223</partnumber>
<partname>Battery</partname>
<partdescription>Holds charge</partdescription>
</action>
<action>
<command>Add</command>
<partnumber>4444</partnumber>
<partname>Pump</partname>
<partdescription>Pumps stuff</partdescription>
</action>
</servicexml>
我试图写一个Python脚本,将去掉所有相关信息,并把它变成一本字典,所以我可以通过键查找值。目前,我的代码只能保存一个维度 - 这意味着在我的XML文件中,最后一个标记是写入的唯一值。如何在我的字典中动态分配维度以保存来自XML文件的多个操作?这样我可以访问每个零件序列的关键值。
基于大卫艾伯的回答:
我不得不改变部分进口模块但是他的方法仍然使用这里是我的Python代码
from lxml import etree
from StringIO import StringIO
actionInformation = []
tagsOfInterest = ['command','partnumber','partname','partdescrip']
tagDataOfIntrest = {}
xmlFile = "parts.xml"
context = etree.iterparse(xmlFile)
for action, elem in context:
if elem.tag in tagsOfInterest:
actionInformation.append([elem.tag,elem.text])
tagDataOfInterest = dict(actionInformation)
print tagDataOfInterest
解决方案。 from lxml import etree
xmlFile = "parts.xml"
context = etree.parse(xmlFile)
actions = context.findall('action')
parsed = [{field.tag: field.text for field in action} for action in actions]
from lxml import etree
xmlFile = "parts.xml"
context = etree.parse(xmlFile)
actions = context.findall('action')
parsed = [{field.tag: field.text for field in action} for action in actions]
您可以创建词典,其中每个列表元素对应于'action's的一个列表。例如,你应该有'[{'command':'Add','partnumber':1223,'partname':'Battery','partdescription':'Holds charge'},{'command':'Add', 'partnumber':4444,'partname':'Pump','partdescription':'Pumps stuff'}]'。有没有像这样的声音对你有好处? – 2012-02-15 16:38:06
这基本上是我试图完成的。通过这种方式,我可以轻松访问任何个人操作键 – user1130161 2012-02-15 16:41:37