我有一個xml
文件的格式爲:解析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__'嗎? – jonrsharpe