我正在使用utf-16
函数解析用ElementTree.parse
编码的xml文件。
当文件包含一些格式不正确的字符(例如♀, ♂
.etc)时,程序会崩溃。并出现错误“xml.parsers.expat.ExpatError: not well-formed (invalid token)
”。
我怎么能避免这个错误并解决这个问题?我怎么能忽略这些形状不正确的角色呢?谢谢!下面是我的代码:
tree = ElementTree()
root = tree.parse(xml_file)
xml_file是以UTF-16格式编码的文件。 该错误将指出格式不正确的字符的行号和列号。
答案 0 :(得分:3)
由于xml.parsers.expat.ParserCreate
仅支持四种编码,我会全部尝试。那些编码是:
UTF-8
,UTF-16
,ISO-8859-1
(Latin1
)和ASCII
。
您现在可以使用以下编码运行ElementTree.parse
:
from xml.etree.ElementTree import ElementTree
from xml.parsers import expat
tree = ElementTree()
root = tree.parse(xml_file, parser=expat.ParserCreate('UTF-8') )
root = tree.parse(xml_file, parser=expat.ParserCreate('UTF-16') )
root = tree.parse(xml_file, parser=expat.ParserCreate('ISO-8859-1') )
root = tree.parse(xml_file, parser=expat.ParserCreate('ASCII') )
答案 1 :(得分:1)
您需要建立两件事。
(a)是否有XML声明,它对编码有什么看法?
(b)用于表示这些字符的文件中的实际字节是什么?