読者です 読者をやめる 読者になる 読者になる

夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。

博士課程に在学するロボット好き学生のブログです。

pythonの文字コードについて

pythonは文字列処理が得意だけど日本語を扱うときは文字コードがちょっと厄介だったりする.

特に注意が必要なunicode型とstr型について私がはまったところをメモ.

やりたかったことは,キーに日本語文字列を持つ辞書に対して,標準入力で取得した日本語文字列との比較を行いマッチしたら”OK”を返すというもの.

これに対して,同じ日本語であるはずなのに,比較で失敗する事象が発生した.
最初から文字コードを疑っていたので.全てのファイルに
# coding: utf-8
を記載.ファイル読み込みなどの箇所は,全て,’utf-8’にした.

しかし,まだ一致しない..

疑ったのは,unicode, stringの型の違い.

やっぱりそうだった.


 pythonから標準入力をするとき,入力はstring形式である.

 しかし,辞書のキーに日本語文字列を用いるとき,unicode型で保存される.

従って,辞書の中に標準入力から取得した文字列そのままを当てはめようとすると,失敗する.

以下に成功する例と失敗する例を記載する.

def proc(instr):
    // 失敗する例
    if instr in dic.keys():
        print “this cannot match”

    // 成功する例
    units = unicode(instr, ‘utf-8’)
    if units in dic.keys():
        print “this can succeed to match”

while(True):
    line = raw_input('input : ')  
    ## for stdin
    insert = proc(line) 
    print instr

ちなみにdicは,
dic={u'あ':aaa, u'い':iii}
のような形式を想定.

以上.

ご参考まで:)