pythonでのunicode型とstr型の扱いについて
pythonianな人には当たり前かもしれないが。
ファイルの読み書きでunicode文字とstr文字の絡みで、
すんなりロジック書けなくて、ここしばらく悩んでた。
ファイルを書き込む際に日本語が混ざってると発生するUnicodeEncodeError。
このページとか、
PythonのUnicodeEncodeErrorを知る - HDEラボ
このぺーじとか
Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法
読んでみてわかったような、わからんような。
なんとなく頭に入ったのは、
- リテラルはとりあえずunicode型にしておく、
- 日本語を含むファイルを読み書きするなら、open()ではなく、codecs.open()を使っておけ
- ロケールのエンコードを取るにはlocale.getpreferredencoding()を使え
import locale import codecs enc = locale.getpreferredencoding() with codecs.open(u"aaa.txt", u"r", enc) as file: for line in file: ・・・
対処療法的で全く内容を理解していないのが、やばい。