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 に答える