簡體   English   中英

Python 3:無法使用xmltodict將XML轉換為dict

[英]Python 3: Unable to convert XML to dict using xmltodict

我正在嘗試將數據從XML文件轉換為python dict,但無法這樣做。 以下是我正在編寫的代碼。

import xmltodict
input_xml  = 'data.xml'  # This is the source file

with open(input_xml, encoding='utf-8', errors='ignore') as _file:
    data = _file.read()
    data = xmltodict.parse(data,'ASCII')
    print(data)
    exit()

在執行此代碼時,以下是我得到的錯誤:
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 239, column 40.
經過多次敲擊和試驗,我意識到我的xml在特定標記內有一些印地語字符,如下所示

<DECL>!! आप की सेवा में पुनः पधारे !!</DECL>

如何在運行xmltodict.parse之前忽略這些未編碼的字符?

我想這個問題與您正在讀取的文件的編碼有關。 為什么要嘗試使用“ ASCII”來解析它?

如果您嘗試從沒有ASCII的python字符串中讀取相同的XML,則應該可以正常工作:

import xmltodict
xml = """<DECL>!! आप की सेवा में पुनः पधारे !!</DECL>"""
xmltodict.parse(xml, process_namespaces=True)

結果是:

OrderedDict([('DECL', '!! आप की सेवा में पुनः पधारे !!')]) 

使用具有該單個輸入行的文件,我可以使用以下命令正確解析該文件:

import xmltodict
input_xml  = 'tmp.txt'  # This is the source file

with open(input_xml, encoding='utf-8', mode='r') as _file:
    data = _file.read()
    data = xmltodict.parse(data)
    print(data)

問題很可能是您試圖將其解析為“ ASCII”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM