Pythonで日本語

Pythonで日本語を扱うには、Unicode型で扱うのが楽な様だ。
参考 PyJUG 日本語環境でのPython

Pythonには文字列型とUnicode型がある。

>>> Hokkaido = "北海道"
>>> print Hokkaido
北海道
>>> type(Hokkaido)
<type 'str'>
>>> Hokkaido
'\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93'
>>> len(Hokkaido)
9
>>> uHokkaido = u'北海道'
>>> print uHokkaido
北海道
>>> type(uHokkaido)
<type 'unicode'>
>>> uHokkaido
u'\u5317\u6d77\u9053'
>>> len(uHokkaido)
3

ファイルからテキストを読み込む時は、codecsを使って次の様に出来る。

>>> import codecs
>>> f = codecs.open("jpn.txt",'r','utf_8')
>>> txt = f.readlines()
>>> type(txt[0])
<type 'unicode'>
>>> for t in txt:
...     print t,
... 
test
日本語てすと!!!
test

Webからテキストを読み出すときはcodecs.getreader()を使えば良さそう。

>>> import urllib
>>> import codecs
>>> url = "http://live24.2ch.net/eq/subject.txt"
>>> f = urllib.urlopen(url)
>>> f = codecs.getreader('shift_jis')(f)
>>> subjects = f.readlines()
>>> type(subjects[0])
<type 'unicode'>
>>> for sbj in subjects:
...     print sbj,
... 
1221234583.dat<>ジョセリーヌのやつでさ (158)
1219554767.dat<>精進湖の水位を生暖かく見守るスレ6【まったりと】 (184)
1221805102.dat<>海の異常&動物の大移動を取り上げるスレ (13)
1220349531.dat<>今井真人の地震予知研究会13 (390)
1220050438.dat<>地震、雷、火事、地震 (65)
1221835586.dat<>台風13号の進路、プレートの境界線をなぞってる(汗) (35)
                          :