Python2とPython3での日本語文字列対応について

毎回、同じようにつまづいて、同じような感じで対応してます。

なので、いいかげん自分に判りやすいようにまとめておきます。

日本語対応といっても、ソースコード中に日本語を書くつもりはありません。

データはYAML形式のファイルで用意。

そして、YAML形式データファイル中の文字列を、UTF-8で日本語に置き換えようとして、 毎回「うぅっ」とうなってます。

結論

日本語を含む文字列処理で .foramt() や .join() を使いたい

Python2 では日本語を含む文字列は .encode('utf-8')して UTF-8 で保持。

Python3 では日本語の有無に関係なく、素直にstrのままでよし。

日本語を含むUTF-8のテキストを標準入力、標準出力で扱いたい

Python2 では素直に sys.stdin/sys.stdout を read/write。

Python3 では sys.stdin.buffer , sys.stdout.buffer を使う。

Python2 の世界には .buffer は存在しないので注意。