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の使い方についてでした。