【发布时间】:2013-09-03 07:05:46
【问题描述】:
所以,我正在处理一个(巨大的)UTF-8 编码文件。我用它做的第一件事是使用 File Object readlines() 方法在列表中获取它的行。但是,当我使用 print 命令进行调试时,我会得到诸如 \xc3 之类的东西。
这是一个复制我的问题的非常小的示例;我创建了一个仅包含文本“Clara Martínez”的 t.txt 文件
f = open("t.txt", "r")
s = f.read()
print s
Clara Martínez
#If I do the following however
lines = f.readlines()
for l in lines:
print l
['Clara Mart\xc3\xadnez']
#write however works fine!
f2 = open("t2.txt", "w")
for l in lines:
f2.write(l)
f2.close()
f1.close()
然后我打开“t2.txt”,字符串是正确的,即:Clara Martínez。 有没有办法让 readlines() 像 read() 一样工作?
【问题讨论】:
-
如果我告诉你
\xc3\xad是í呢? -
你应该使用
io.open和encoding='utf-8'。这会将文件读取为具有正确编码的 Unicode,而不是一系列可能会或可能不会按您期望的方式打印的字节。