如何在python中使用elementtree处理xml文件中格式不正确的字符

时间:2012-07-02 07:39:16

标签: python xml xml-parsing elementtree

我正在使用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格式编码的文件。 该错误将指出格式不正确的字符的行号和列号。

2 个答案:

答案 0 :(得分:3)

由于xml.parsers.expat.ParserCreate仅支持四种编码,我会全部尝试。那些编码是: UTF-8UTF-16ISO-8859-1Latin1)和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)用于表示这些字符的文件中的实际字节是什么?