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

最佳答案

因为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') )

关于python - 如何使用python中的elementtree处理xml文件中格式不正确的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11289496/

10-09 01:18