【发布时间】:2019-08-04 14:17:23
【问题描述】:
我有几个文本文件包含 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 字符。
【问题讨论】:
-
你试过
.open(filename, 'r', encoding='utf8')吗? -
哇,我以为默认使用 utf8,但显然在读写时添加编码 utf8 解决了这个问题!如果您想将其添加为答案,我很乐意将其标记为正确。