0

だから、私は(巨大な)UTF-8でエンコードされたファイルを扱っています。最初に行うことは、ファイル オブジェクトの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

そのコードは、ファイルにテキストを含む1行のみが含まれていると仮定して、あなたが言う結果を与えます'Clara Mart\xc3\xadnez'.

于 2013-09-03T07:08:33.043 に答える