以下语句用于填充文件中的列表:
action = []
with open (os.getcwd() + "/files/" + "actions.txt") as temp:
action = list (temp)
给了我以下错误:
(result, consumed) = self._buffer_decode (data, self.errors, end)
UnicodeDecodeError: 'utf-8' codec can not decode byte 0xf1 in position 67: invalid continuation byte
如果我添加errors = 'ignore'
:
action = []
with open (os.getcwd () + "/ files /" + "actions.txt", errors = 'ignore') as temp:
action = list (temp)
读取文件但不是ñ
和元音重音á-é-í-ó-ú
是python 3的作用,正如我所理解的,默认为'utf-8'
我正在寻找两天或两天以上的解决方案,而且我变得更加困惑。
事先感谢您的任何建议。
答案 0 :(得分:2)
您应该使用codecs
以正确的编码打开文件。
import codecs
with codecs.open(os.getcwd () + "/ files /" + "actions.txt", "r", encoding="utf8") as temp:
action = list(temp)
请参阅codecs docs
答案 1 :(得分:2)
正如@Bogdan指出的那样,你可能不会处理utf-8数据。您可以利用chardet之类的模块来尝试确定编码。如果你在unix-y环境中,你也可以尝试在其上运行file
命令来猜测编码。
使用您的错误消息字符:
>>> import chardet
>>> sample_string = '\xf1'
>>> chardet.detect(sample_string)
{'confidence': 0.5, 'encoding': 'windows-1252'}