フォーマット文

Tracのコードをとある用事で調べていたときに悩んだことを記録しておきます。

python

# -*- coding: utf-8 -*-
format = '%14s:  %-10s  |   %14s:  %-10s';

print format % ('FirstName', 'Taro', 'LastName', 'Python');
print format % ('Origin', u'東京',   'Sex', 'male' );

のように書くと出力が

     FirstName:  Taro        |         LastName:  Python
        Origin:  東京          |              Sex:  male

となり | の位置がずれてしまいます。


これは"東京"という文字が表示としては半角英数4文字分のスペースをとっているにもかかわらず、UNICODEにより2文字と数えられることによって発生しているようです。

このような英語と日本語を混ぜて使うっていうケースは結構あると思うんですが、Pythonの人達はどうしてるんでしょうか。