『Effective Python』の続き。 更新が遅いのは訳してから感想を書くことにしているからであるが、別に翻訳を公開するわけじゃないから…と思いつつ。
Effective Python: 59 Specific Ways to Write Better Python (Effective Software Development Series)
- 作者: Brett Slatkin
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2015/03/08
- メディア: ペーパーバック
- この商品を含むブログ (1件) を見る
Python 3のstr
とunicode
、Python 2のunicode
とstr
はそれぞれ違います、という話。
上手いヘルパー函数を用意して対処したり組み込み函数open
などでバイナリファイルを開くときには'wb'
とか'rb'
つけましょう。
Python 2のunicode
とPython 3のstr
のUTF-8エンコーディングは違うという話を聞かされて実験した結果は以下の通り。
>>> unicode("ほげ").encode("UTF-8") # Python 2 '\xc3\xa3\xc2\x81\xc2\xbb\xc3\xa3\xc2\x81\xc2\x92' >>> str("ほげ").encode("UTF-8") # Python 3 b'\xe3\x81\xbb\xe3\x81\x92' >>> b'\xc3\xa3\xc2\x81\xc2\xbb\xc3\xa3\xc2\x81\xc2\x92'.decode('UTF-8') '\xe3\x81\xbb\xe3\x81\x92' >>> b'\xe3\x81\xbb\xe3\x81\x92'.decode() 'ほげ'
これは怖い。 おぼろげながらPython 3への移行が遅れた理由がわかったような気がした。