2017-08-17 10 views
1

私は「Unicdoe Pain」の記事を読みました。私は「Unicode Sandwich」を念頭に置いています。 enter image description hereファイルに書き込む前にunicode変数をエンコードする必要がありますか?

は今、私はいくつかの中国扱うために持っていると私は、リスト

chinese = [u'中文', u'你好'] 

を持っている私は、ファイルに書き込む前にエンコーディングを続行する必要がありますか?

add_line_break = [word + u'\n' for word in chinese] 
encoded_chinese = [word.encode('utf-8') for word in add_line_break] 
with open('filename', 'wb') as f: 
    f.writelines(encoded_chinese) 

何とか私はpython2でそれを見つけました。私はこれをすることができます:

chinese = ['中文', '你好'] 
with open('filename', 'wb') as f: 
    f.writelines(chinese) 

unicode matter involed。 :D

+0

ファイルを読み書きするには、エンコードの代わりに[codecs.open](https://docs.python.org/3/library/codecs.html#codecs.open)関数を使用してください。 Python2 'str')型は、すべてが適切な' str'(Python2'unicode')型になるときに、あなたのアプリケーション内で手動で管理する必要はありません。 – metatoaster

答えて

1

これを行う必要はありません。ioまたはcodecsを使用して、エンコードでファイルを開くことができます。

import io 
with io.open('file.txt', 'w', encoding='utf-8') as f: 
    f.write(u'你好') 

codecs.openの構文は同じです。

+0

さらに、 'io.open'を使用してください。 Python 3の 'open'と互換性があり、後で移植します。 –

0

In python3;

with open('file.txt, 'w', encoding='utf-8') as f: 
    f.write('你好') 

でも問題ありません。

+0

はい。私はpython2でもそうすることができることを知りました。それではなぜユニコードタイプが私たちのプログラムに関わるのですか?バイトテキストをどこにでも宣言してみませんか? – Tianqing

関連する問題