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

冬瓜真瓜
  • 14

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

回复
阅读 3.2k
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 函数等因素,而造成的显示型反斜杠。

你知道吗?

宣传栏