【发布时间】:2015-07-31 09:23:21
【问题描述】:
我正在处理几千个 xml 文件并且有一些问题文件。
在每种情况下,它们都包含前导 Unicode 字符,例如 C3 AF C2 BB C2 BF 和 EF BB BF 等。
在所有情况下,文件只包含 ASCII 字符(在标题字节之后),因此将它们转换为 ASCII 不会有数据丢失的风险。
我不能更改磁盘上文件的内容,只能将它们用作脚本的输入。
在最简单的情况下,我很乐意将此类文件转换为 ASCII(所有输入文件都经过解析、一些更改并写入输出目录,第二个脚本将在其中处理它们。)
我将如何编码?当我尝试时:
with open(filePath, "rb") as file:
contentOfFile = file.read()
unicodeData = contentOfFile.decode("utf-8")
asciiData = unicodeData.encode("ascii", "ignore")
with open(filePath, 'wt') as file:
file.write(asciiData)
我收到错误must be str, not bytes。
我也试过了
asciiData = unicodedata.normalize('NFKD', unicodeData).encode('ASCII', 'ignore')
结果相同。我该如何纠正?
或者有没有其他方法可以隐藏文件?
【问题讨论】:
-
从技术上讲,这些不是字符;它们是 BOM 字节。理想情况下,当以 Unicode 文本读取文件时,它们不会出现在输入流中(但我不知道 Python 如何处理 BOM)。
标签: python python-3.x unicode