我有几个文本文件,其中包含python 3无法处理的字符。最麻烦的地方似乎是“结束”引号。
我尝试使用以下方式读取文件:
with open(filename, 'r', errors='backslashreplace') as file:
text = file.read()
with open(filename, 'w', errors='backslashreplace') as file:
file.write(text)
,然后在Notepad ++中打开文件查看字符时,我突出显示xE2 x80
来表示非文本字符,然后是普通文本中的\x9d
。
我看到this处理着\xE2\x80\x9D
字符。在python REPL中,我能够像这样手动创建一个字节对象,将其解码为utf-8,并在打印时显示为我期望的字符。我不确定为什么在读取文件时无法正确理解字符。
当读取文件时出现ignore
错误而不是backslashreplace
时,我仍然出现xE2 X80
字符,而且我还没有弄清楚如何执行字符串操作来删除它们。
最终,我的目标是将所有这些奇怪的引号替换为普通引号。我可以想像有几种方法可以完成此操作,但是它们都要求我以某种方式寻址(或删除)xE2 X80
字符,或正确读取3个字节的\xE2\x80\x9D
字符。
答案 0 :(得分:1)
指定编码类型可以解决此问题。您可以这样做,
with open(filename, 'r', encoding='utf8', errors='backslashreplace' ) as file:
text = file.read()
with open(filename, 'w', encoding='utf8', errors='backslashreplace') as file:
file.write(text)