0

所以,我正在处理一个(巨大的)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() 一样工作?

4

1 回答 1

4

您声称:

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'

于 2013-09-03T07:08:33.043 回答