ぐるんぐるん

おもむくままに書いてます。

全角半角に悩んだ

全角半角がなぜあるのか。

研究でプログラム組んでいるときに、いつも面倒になる文字列関係の処理。Pythonで組んでいるので幾分楽だけれども、それでも面倒なものは面倒。日本語とは、半角全角とは、どうしてこんなに面倒なのだろうか。

Pythonでの日本語の処理

とりあえず、ファイル等から読みこんだら、即unicode型にしている*1Python3でunicode型だけになったというお話は聞くけど、自分の検証用のプログラムで新しいバージョン使うのはなんかあれだし、そもそもそんな使いこなせている気はしないから、2.7使ってる。

そんなことはどうでもいい。

全て全角にしたかった。

とある事情*2で全ての文字を全角にしたかった。今になってもあくどい方法であると自負している。最初は標準ライブラリのunicodedataを使おうと思った。けど、takakiさんのkconvというライブラリにお世話になってた。しかし、「もっといろいろ設定したい。」「他の文字にも置換したい。」とか思い始めて、放浪してた。

しゅじんこうはcnvkを見つけた。

放浪していたら、cnvk – Python で全角・半角・ひらがな・カタカナ等を変換する | Foreignkey, Inc.という記事を見つけた。標準で変換テーブルが充実してるうえ、変換テーブルを必要に応じて追加できる。これは便利だと思って使ってみた。

import cnvk
print cnvk.convert(u"ぐるんぐるん", {u"る": "*"}, cnvk.HIRA2KATA)
print cnvk.convert(u"ぐるんくるん", {u"る": "*"}, cnvk.HIRA2KATA, skip=u"く")

を実行したら、

グ*ング*ン
グ*ンく*ン

になります。

見事卑猥な感じになった。

これからもお世話になろう、ぐへへ。

*1:unicode関数やdecode

*2:/などを含むフレーズをそのままファイル名に使いたかった