Python 读取文件时怎么防止其在转义字符前加 \

今天突然遇到一个问题,在文本处理的时候需要去除一些停用词,停用词都放在一个txt文件中,其中一个字符串是 "\xa0",用python读取后便会自动变为 “\\xa0”. 以前都是字符串前面加 “r” ,但是从文件中读取这个真的没想出来...

阅读 9.7k
3 个回答

\xa0是一个空白符,这是它的十六进制表示形式。我猜你是把\xa0这个字符串直接存到了文件中。正确的做法是,存这个符号本身。

>>> with open('new.py', 'w') as f:
...     f.write('\xa0')
...
1
>>> with open('new.py', 'r') as f:
...     content = f.read()
...
>>> content
'\xa0'

如果用文本编辑器打开,只能看到一个空白符。

clipboard.png

同意楼上的,python在保存文件时候,已经自动帮把文件转换称流的格式了。

方法一,用二进制的方式读取文件,并对内容进行细致的解析,来避免这个问题。

方法二,由于我猜测这可能是编码造成的问题,所以建议用 open 函数的 errors 参数来测试这个问题,有可能解决。

此外,因为没有测试,我不确定你这是不是实际上被添加了一个反斜杠,还是 Python 打印时为了显示,比如因 repr 函数等因素,而造成的显示型反斜杠。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题