2005
Jan
30th
zenhan.py
アルファベット・記号・数字・カタカナの全角・半角変換をする
以前、全角半角の変換をするクラスを作ったのですが、いちいちオブジェクトを作ってってのもなんだしということで、関数として書き直しました。おいおいクラスの方も同様に書き直そうかなと思いますが。
使い方については以下の通りです。また、ソースはこんな感じです。
追記: 2007/Jan/6 1:45
blogSetomits : zenhan.py 0.4で新しいモノについて言及しています。
使い方については以下の通りです。また、ソースはこんな感じです。
追記: 2007/Jan/6 1:45
blogSetomits : zenhan.py 0.4で新しいモノについて言及しています。
インポートできる適当なところにzenhan.pyを置くなり、PythonPathを変更するなりしててインポートします。
全角を半角に変換するにはz2h()という関数を、半角を全角に変換するにはh2z()という関数を用います。どちらの関数もユニコード文字列を第1引数として与え、これは必須となります。第2引数として変換する対象となるものの種類を与えます。種類としてはASCII(アルファベット・記号)、DIGIT(アラビア数字)、KANA(カタカナ)の3つを用意しています。何も与えられない場合はこれら3つとも対象となります。複数指定する場合は「|」で並べます。また、返値はユニコード文字列となります。
使い方の例を記すと、
import zenhan
全角を半角に変換するにはz2h()という関数を、半角を全角に変換するにはh2z()という関数を用います。どちらの関数もユニコード文字列を第1引数として与え、これは必須となります。第2引数として変換する対象となるものの種類を与えます。種類としてはASCII(アルファベット・記号)、DIGIT(アラビア数字)、KANA(カタカナ)の3つを用意しています。何も与えられない場合はこれら3つとも対象となります。複数指定する場合は「|」で並べます。また、返値はユニコード文字列となります。
使い方の例を記すと、
>>> org = unicode("abcDEF123456アガサダナバビプペ", "euc-jp") >>> print zenhan.z2h(org, zenhan.ASCII).encode("euc-jp") abcDEF123456アガサダナバビプペ >>> print zenhan.z2h(org, zenhan.ASCII|zenhan.KANA).encode("euc-jp") abcDEF123456アガサダナバビプペ >>> print zenhan.h2z(org).encode("euc-jp") abcDEF123456アガサダナバビプペ >>> print zenhan.h2z(org, zenhan.DIGIT).encode("euc-jp") abcDEF123456アガサダナバビプペという感じです。
Posted by setomits at 06:48 |
Comments: 5
バグの内容は、「全角文字/半角文字それぞれの文字集合の最後の1文字を、対応表に加えていなかった」ということでした。
全角カナに「。(句点)」「、(読点)」「・(中黒)」「゛(濁点)」「゜(半濁点)」「「(カギかっこ開き)」「」(カギかっこ閉じ)」「ー(長音記号)」を追加。
それぞれに対応するのを半角カナにも追加。
忘れてたわけではないのですが、手元の環境(Emacs.app)で「ヴ」が1文字で表示できなかったのであきらめていたのでした。
なるべく早く調べてから明記するようにします。