用python中的elementtree处理xml文件中的不规则字符

2024-06-06 04:43:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用ElementTree.parse函数解析用utf-16编码的xml文件。 当文件包含一些格式不正确的字符(如♀, ♂等)并且出现错误“xml.parsers.expat.ExpatError: not well-formed (invalid token)”时,程序将崩溃。 如何避免此错误并解决此问题?我怎么能忽略这些格式不好的字符呢?谢谢!以下是我的代码:

tree = ElementTree()
root = tree.parse(xml_file)

xml_file是以UTF-16格式编码的文件。 错误会指出格式不正确的字符的行号和列号。


Tags: 文件函数tree编码parse格式错误xml
2条回答

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

你需要确定两件事。

(a)是否有XML声明,它对编码有何说明?

(b)文件中用于表示这些字符的实际字节是多少?

相关问题 更多 >