【发布时间】:2025-11-29 00:05:02
【问题描述】:
我有一个xml 格式的文件:
<NewDataSet>
<Root>
<Phonemic>and</Phonemic>
<Phonetic>nd</Phonetic>
<Description/>
<Start>0</Start>
<End>8262</End>
</Root>
<Root>
<Phonemic>comfortable</Phonemic>
<Phonetic>comfetebl</Phonetic>
<Description>adj</Description>
<Start>61404</Start>
<End>72624</End>
</Root>
</NewDataSet>
我需要处理它,例如,当用户输入nd 时,程序将其与<Phonetic> 标记匹配,并从<Phonemic> 部分返回and。我想也许如果我可以将 xml 文件转换为字典,我将能够遍历数据并在需要时查找信息。
我搜索并找到了用于相同目的的xmltodict:
import xmltodict
with open(r'path\to\1.xml', encoding='utf-8', errors='ignore') as fd:
obj = xmltodict.parse(fd.read())
运行它会给我一个ordered dict:
>>> obj
OrderedDict([('NewDataSet', OrderedDict([('Root', [OrderedDict([('Phonemic', 'and'), ('Phonetic', 'nd'), ('Description', None), ('Start', '0'), ('End', '8262')]), OrderedDict([('Phonemic', 'comfortable'), ('Phonetic', 'comfetebl'), ('Description', 'adj'), ('Start', '61404'), ('End', '72624')])])]))])
不幸的是,这并没有让事情变得更简单,我不确定如何使用新的数据结构来实现程序。例如要访问nd,我必须写:
obj['NewDataSet']['Root'][0]['Phonetic']
这非常复杂。我试图通过dict() 将它变成一个常规字典,但是由于它是嵌套的,所以内层保持有序并且我的数据很大。
【问题讨论】:
-
转换成普通字典会有什么不同?您仍将拥有尽可能多的密钥层。 究竟是什么问题;你只是不喜欢
OrderedDict.__repr__吗?
标签: python xml dictionary xml-parsing xmltodict