读取带有重音元音的文件时出错

时间:2013-10-21 03:46:40

标签: python utf-8

以下语句用于填充文件中的列表:

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'

我正在寻找两天或两天以上的解决方案,而且我变得更加困惑。

事先感谢您的任何建议。

2 个答案:

答案 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'}
相关问题