在 python 中处理非 ascii 代码字符真的很困惑。谁能解释一下?
我正在尝试读取纯文本文件并将所有非字母字符替换为空格。
我有一个字符列表:
ignorelist = ('!', '-', '_', '(', ')', ',', '.', ':', ';', '"', '\'', '?', '#', '@', '$', '^', '&', '*', '+', '=', '{', '}', '[', ']', '\\', '|', '<', '>', '/', u'—')
对于我得到的每个 token ,我通过调用用空格替换该 token 中的任何字符
for punc in ignorelist:
token = token.replace(punc, ' ')
注意 ignorelist 末尾有一个非 ascii 码字符:u'—'
每当我的代码遇到那个字符时,它就会崩溃并说:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position
我尝试通过在文件顶部添加 # -*- coding: utf-8 -*- 来声明编码,但仍然无法正常工作。有谁知道为什么?谢谢!
请您参考如下方法:
您的文件输入不是 utf-8。因此,当您点击该 unicode 字符时,您的输入会在比较时出现错误,因为它将您的输入视为 ascii。
尝试用它来读取文件。
import codecs
f = codecs.open("test", "r", "utf-8")
