我有一些xml文件要处理。你知道吗
下面是从其中一个文件中派生的示例
fileAsString = """
<?xml version="1.0" encoding="utf-8"?>
<eventDocument>
<schemaVersion>X2</schemaVersion>
<eventTable>
<eventTransaction>
<eventTitle>
<value>Some Event</value>
</eventTitle>
<eventDate>
<value>2003-12-31</value>
</eventDate>
<eventCoding>
<eventType>47</eventType>
<eventCode>A</eventCode>
<footnoteId id="F1"/>
<footnoteId id="F2"/>
</eventCoding>
<eventCycled>
<value></value>
</eventCycled>
<eventAmounts>
<eventVoltage>
<value>40000</value>
</eventVoltage>
</eventAmounts>
</eventTransaction>
</eventTable>
</eventDocument>"""
注意,每个文档中可能有许多eventtable,并且事件可以比我隔离的事件有更多的细节。你知道吗
我的目标是创建一个以下形式的词典
{'eventTitle':'Some Event, 'eventDate':'2003-12-31','eventType':'47',\
'eventCode':'A', 'eventCoding_FTNT_1':'F1','eventCoding_FTNT_2':'F2',\
'eventCycled': , 'eventVoltage':'40000'}
我实际上是从文件中读取这些内容,但是假设我有一个字符串,那么我的代码将获取eventTransaction元素正下方的元素的文本,其中文本位于值标记中,如下所示
import xml.etree.cElementTree as ET
myXML = ET.fromstring(fileAsString)
eventTransactions = [ e for e in myXML.iter() if e.tag == 'eventTransaction']
testTransaction = eventTransactions[0]
my_dict = {}
for child_of in testTransaction:
grand_children_tags = [e.tag for e in child_of]
if grand_children_tags == ['value']:
my_dict[child_of.tag] = [e.text for e in child_of][0]
>>> my_dict
{'eventTitle': 'Some Event', 'eventCycled': None, 'eventDate': '2003-12-31'}
这似乎是错误的,因为我并没有真正利用xml,而是使用暴力,但我似乎还没有找到一个例子。你知道吗
有没有一个更清晰和更python的方式来创建我所寻找的输出?你知道吗
使用XPath拉出您感兴趣的元素。你知道吗
以下代码创建dict列表(即表/事务/信息):
输出:
相关问题 更多 >
编程相关推荐