2016-06-11 15 views
-2

すべての54607印刷可能文字を含むテキストファイルを作成しようとしていますが、各行の長さは読みやすさのために80文字にしてください。エラーメッセージを返す改行文字をバイナリモードでテキストファイルに書き込む方法

utf_all = ' !"#$'...' 
lines = '\n'.join(utf_all[i:i+80] for i in range(0, 54607, 80)) 
file = open('allchars.txt', 'w').write(lines) 

UnicodeEncodeError: 'charmap' codec can't encode characters in position 193-243: character maps to <undefined>

私は文字をコードとバイナリモードで書き込みをしてみてください、それは改行\ nを無視して、1行に文字列全体を置くとに改行を追加した場合ファイルの終わり。

+0

なぜバイナリモードでテキストファイルを開きますか?なぜファイルを開くときにエンコーディングを指定しないのですか?なぜあなたは印刷可能な文字が54607しかないと思いますか? –

+0

デフォルトの書き込みモードはテキストです。バイナリモードで書くには 'open( 'filename'、 'wb')'を使います。 –

+0

改行がどこで失敗しているのかわかりません。 – usr2564301

答えて

-1

あなたのコードは、そのままpython3.5でうまく動作します。しかし、ファイルをテキストファイルとして開くと、それはあなたが望むものではありませんか?

私は

open('allchars.txt', 'wb').write(lines) 

と交換した場合、私はencode('utf-8')linesに追加する必要がありました:

file = open('allchars.txt', 'wb').write(lines.encode('utf-8')) 

EDIT: このための私のコード:

utf_all = ''.join([chr(i) for i in range(2**16)]) 
lines = '\n'.join(utf_all[i:i+80] for i in range(0, 54607, 80)) 
file = open('allchars.txt', 'wb').write(lines.encode('utf-8')) 

私のテキストエディタは、 80文字後にこれを囲みます(gedit

+0

あなたはどこで 'utf_all'値を取得しましたか? –

+0

私の更新されたアンサーを参照してください – DomTomCat

関連する問題