1

編集: http://pastebin.com/W4iG3tjS - ファイル

キリル文字を含む utf8 でエンコードされたテキスト ファイルがあります。それをロードするには、次のコードを使用します。

import codecs
fopen = codecs.open('thefile', 'r', encoding='utf8')
fread = fopen.read()

freadすべてのユニコード (エスケープ シーケンス) のファイルを画面にダンプします。print fread読み取り可能な形式で表示します(ASCIIだと思います)。

次に、それを分割して、エンコーディングなしで空のファイルに書き込もうとします。

a = fread.split()
for l in a: 
    print>>dasFile, l

しかし、次のエラー メッセージが表示されます。UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not in range(128)

ファイルにダンプする方法はありfread.split()ますか? このエラーを取り除くにはどうすればよいですか?

4

2 に答える 2

4

を介してファイルを開いて読み取ったためcodecs.open()、Unicode にデコードされています。したがって、出力するには、おそらくUTF-8に戻すために、再度エンコードする必要があります。

for l in a:
    dasFile.write(l.encode('utf-8'))
于 2012-06-11T10:04:17.487 に答える
0

print は、通常は「ascii」であるデフォルトのエンコーディングを使用します。したがって、印刷でそのエラーが表示されます。ただし、ファイルを開いて直接書き込むことはできます。

a = fopen.readlines() # returns a list of lines already, with line endings intact
# do something with a
dasFile.writelines(a) # doesn't add line endings, expects them to be present already.

a の行がすでにエンコードされていると仮定します。

PS。ioモジュールも調査する必要があります。

于 2012-06-11T10:04:31.233 に答える