はてブロ@ama_ch

https://twitter.com/ama_ch

Pythonのインタラクティブシェルで、リスト内の日本語をそのまま表示する

Pythonのインタラクティブシェルはとても便利なんですが、リストやタプルなどのシーケンスの要素が日本語の場合、そのまま表示できません。

>>> lst = [u'あ', u'い', u'う', u'え', u'お']
>>> lst
[u'\u3042', u'\u3044', u'\u3046', u'\u3048', u'\u304a']


これを日本語で表示するには、通常for文を用いて各要素をprintします。

>>> for i in lst:
...     print i,
... 
あ い う え お


ここで、次のような書き方をすると、for文を使わなくてもリスト内の日本語が表示できます。

>>> print str(lst).decode("unicode-escape")
[u'あ', u'い', u'う', u'え', u'お']

str()をrepr()にしても動作します。


ただし、日本語はユニコード文字列でないと表示できません。

>>> list = ["あ", "い", "う", "え", "お"]
>>> list
['\xe3\x81\x82', '\xe3\x81\x84', '\xe3\x81\x86', '\xe3\x81\x88', '\xe3\x81\x8a']
>>> print str(list).decode("unicode-escape")
['あ', 'い', 'う', 'え', 'お']


これで各要素をユニコード文字列に変換したら手間だしなぁ、他に方法はないのかな。