2

我有一个解析 xml 文件并返回以下错误的 python 脚本:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 614617: character maps to <undefined>

我很确定错误正在发生,因为我试图解析的 xml 文档中有一些非法字符,但是我无权直接修复我正在读取的这个特定的 xml 文件。

我是否能够拥有它,以便这些字符不会绊倒我的脚本并允许它继续解析而不会出错?

这是 tat 正在读取 xml 并对其进行解码的脚本的一部分:

def ReadXML(self, path):
    self.logger.info("Reading XML from %s" % path)
    codec = "Windows-1252"
    xmlReader = open(path, "r")
    return xmlReader.read().decode(codec)
4

1 回答 1

7

当您调用 时decode(),您可以传递可选errors参数。默认情况下,它设置为strict(如果发现无法解析的内容会引发错误),但您也可以将其设置为replace(将有问题的字符替换为\ufffd)或ignore(仅将有问题的字符排除在外)。

所以它会是:

return xmlReader.read().decode(codec, errors='ignore')

或您选择的任何级别。

更多信息可以在Python Unicode HOWTO中找到。

于 2012-03-06T19:21:20.380 回答