NKF_pythonで半角文字の変換
前回の続き、
ueBLOG | Pythonで機種依存文字を含む文字列を半角から全角へ
NFK_pythonにはguessという文字コードを判別してくれる関数があるのですが、
>>> b = "ナイトウあいう".decode("utf8").encode("sjis") #僕のipythonの内部コードがutf8のためutf8でdecode
>>> b
'ナイトウ\x82\xa0\x82\xa2\x82\xa4'
>>> print b
ナイトウあいう
>>> nkf.guess(b)
'Shift_JIS'
これは半角だけの文字だと上手く判別してくれません。
>>> a = "ナイトウ".decode("utf8").encode("sjis")
>>> nkf.guess(a)
'EUC-JP'
しかも、全角文字が入っているものは文字コード変換できるけど、半角だけだと上手くいきません
>>> print nkf.nkf("-sx", b)
ナイトウあいう
>>> print nkf.nkf("-sx", a)
轍蝶
これはやはり元のコードを知っていないとだめなようです。
- -J -E -S -W
- 期待される入力コードの性質を指定する。 -J ISO-2022-JP を仮定する。 -E 日本語 EUC (AT&T) を仮定する。 -S Shift_JIS を仮定する。 いわゆる半角カナ (JIS X 0201 片仮名)も受け入れる。 -W UTF-8 を仮定する。
というわけで、sjisを期待するためにSをオプションでつければちゃんと表示されました。
>>> print nkf.nkf("-sxS", a)
ナイトウ
文字コードが自動判別できないとなると、nkfを使う理由が少し、、、、、
オレ、今度生まれるときはマルチバイト文字がない国に生まれるんだ、、、、、
perm link: /blog/entry/nkfpython/