Python read()适用于UTF-8但readlines()“不”

时间:2013-09-03 07:05:47

标签: python utf-8 io

所以,我正在使用(巨大的)UTF-8编码文件。我用它做的第一件事就是使用File Object readlines()方法在列表中获取它的行。但是,当我使用print命令进行调试时,我会得到类似的东西,例如 \ xc3 等。

这是一个很小的例子,可以复制我的问题;我创建了一个t.txt文件,其中只包含文本“ClaraMartínez”

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”,字符串是正确的,即:ClaraMartínez。 有没有办法“make”readlines()作为read()工作?

1 个答案:

答案 0 :(得分:5)

你声称这个:

lines = f.readlines()
for l in lines:
    print l

会导致这个:

['Clara Mart\xc3\xadnez']

这不是真的,它不会。我认为你在代码中犯了一个错误,并写了这个:

lines = f.readlines()
for l in lines:
    print lines

该代码将给出您说的结果,假设该文件只包含一行文本'Clara Mart\xc3\xadnez'