python mojimojiを用いて半角、全角変換を高速に行う
pythonでユーザからの文字入力が必要な場面があると思います。
例えば数値を入力してもらう際、pythonスクリプト内部ではもちろん半角数字で処理したい所ですが、
ユーザが全角数字で入力してしまう可能性もあります。
そんな時に役に立つのが、文字列の半角、全角を高速に変換してくれるライブラリmojimoji。
実装にはc++が使われているので、高速に文字変換を行うことができます。
今回はmojimojiの使い方について、まとめていきたいと思います。
mojimojiでできること
日本語文字列変換ライブラリmojimojiを使用すると、文字列の全角・半角を高速に変換することができます。
ファイルから文字列を取得する際、その文字列には全角英数字が含まれている(最悪の場合ごちゃ混ぜ)かもしれません。
そんな文字列をpythonスクリプトで処理するとなると、全て半角英数字に置き換えたくなりますよね。
mojimojiを使うと、例えば。。。
12345 ---> 12345 (数値の全角ー半角変換) 12345アイウエオ ---> 12345アイウエオ (カナのみ半角に変換) abcde12345 ---> abcde12345 (英字のみを全角に)
こういった変換が簡単にできるようになります。
便利なライブラリですので、皆さんもぜひ使いましょう。
mojimojiのインストール
mojimojiはpythonのパッケージ管理ツールpipを用いてインストールすることができます。
$ pip install mojimoji
使い方
mojimojiには文字を
全角から半角へと変換する zen_to_han() という関数と、
半角から全角へと変換する han_to_zen() という関数があります。
zen_to_han( input_string, kana=True, digit=True, ascii=True ) | 全角から半角への変換 |
---|---|
han_to_zen( input_string, kana=True, digit=True, ascii=True ) | 半角から全角への変換 |
全角から半角への変換
import mojimoji print( mojimoji.zen_to_han( "12345" ) ) # 出力 : 12345 (半角)
半角から全角への変換
import mojimoji print( mojimoji.zen_to_han( "abcde" ) ) # 出力 : abcde (全角)
変換のオプション
mojimoijには変換のオプションが備わっており、引数に指定してあげることで
数値のみ、英字のみ、カナのみを変換するといった、変換文字列の対象を指定することができます。
オプションはキーワード引数で指定します。
こちらも実際にサンプルでみてみましょう。
カナの変換を行わない
import mojimoji print( mojimoji.zen_to_han( "abcde12345アイウエオ", kana=False ) )
出力 : “abcde12345アイウエオ”
(カナは半角への変換が行われない。)
数値の変換を行わない
import mojimoji print( mojimoji.zen_to_han( "abcde12345アイウエオ", digit=False ) )
出力 : “abcde12345アイウエオ”
(数値は半角への変換が行われない。)
英字の変換を行わない
import mojimoji print( mojimoji.zen_to_han( "abcde12345アイウエオ", ascii=False ) )
出力 : “abcde12345アイウエオ”
(英字は半角への変換が行われない。)
もちろん、組み合わせて使うこともできます。
import mojimoji print( mojimoji.han_to_zen( "abcde12345アイウエオ", digit=False, ascii=False ) )
出力 : “abcde12345アイウエオ”
(数字と英字は全角への変換が行われない。)
オプション一覧
mojimojiで使えるオプションの一覧です。
デフォルトでは全てTrueとなっています。
mojimoji.zen_to_han( input_string, kana=True, digit=True, ascii=True )
このように、mojimoji関数ではキーワード引数として3種類のオプションが存在します。
kana
bool型。かなの変換を行うかどうか。
digit
bool型。数値の変換を行うかどうか。
ascii
bool型。英字の変換を行うかどうか。
以上、pythonも文字変換ライブラリmojomojiの使い方についてでした。