【发布时间】:2016-05-18 14:37:09
【问题描述】:
前言:
2016 年年中的一个寒冷的雨天,开发人员仍然因为没有使用 Python 3.0 而遇到 Python 编码问题。伟大的 S.O 社区会帮助他吗?不知道,我们拭目以待
范围:
我有一个UTF-8 encoded file,其中包含带有重音的单词,例如CURRÍCULO 和NÓS。由于某种我无法理解的原因,我无法使用 Python 2.7 正确阅读它们。
代码片段:
import codecs
f_reader = codecs.open('PATH_TO_FILE/Data/Input/kw.txt', 'r', encoding='utf-8')
for line in f_reader:
keywords.append(line.strip().upper())
print line
我得到的输出是:
TRABALHE CONOSCO
ENVIE SEU CURRICULO
ENVIE SEU CURRÍCULO
UnicodeEncodeError, 'ascii' codec can't encode character u'\xcd' in position 14: ordinal not in range(128)
编码、编码、编码:
我使用 notepad++ 将文件转换为常规 utf-8 和没有 ByteOrderMark 的文件,它向我显示字符很好,没有任何问题。顺便说一句,我使用的是 Windows,默认情况下它将创建文件为 ANSI。
问题:
我应该怎么做才能正确读取这个文件,包括í和ó和其他重音字符?
为了更清楚,我想在内存中使用的字符串上keep the accentuation。
更新:
这是关键字列表,在内存中,使用您可以看到的代码从文件中读取。
【问题讨论】:
-
他们读得很好。阅读完整的回溯。
-
@IgnacioVazquez-Abrams 你能定义“很好”吗?理论上,程序在尝试将其编码为与文件所在的相同编码时会崩溃。我错过了什么?
-
你读过回溯吗?
-
@IgnacioVazquez-Abrams 你的意思是,“打印”打印得很好。是你的意思吗?是的,我读过。我无法理解的是为什么它在调用 print 方法之后就在这一行崩溃。它打印并崩溃。
标签: python python-2.7 encoding utf-8