【全角⇔半角】Pythonで日本語の表記ゆれを整えるライブラリおすすめ

Python(パイソン)で『半角文字』と『全角文字』を変換するときに、おすすめのライブラリです。

  • jaconv(ジャパニーズコンバーター)
  • mojimoji(モジモジ)
  • str.maketrans()str.translate()(メイクトランス と トランスレート)

自分はこの3つを使ってきましたが、どれもおすすめです。

jaconv(ジャパニーズコンバーター)

一番使っているのは jaconv です。

Windowsでも pip で簡単にインストールできて、メソッド名も短いところが好きです。

変換速度もとても速かったです。特別な理由がない限り jaconv を使っています。

ありがとうございます。

GitHub – ikegami-yukino/jaconv

Python3での日本語変換モジュールの比較 – Qiita

mojimoji(モジモジ)

大量のテキストを扱うときは、mojimoji を使っています。

Windowsだと、いろいろとコンパイラの準備をしてから pip でインストールする必要がありました。

インストールはむずかしかったですが、確かに高速化できました。

ありがとうございます。

GitHub – studio-ousia/mojimoji

str.maketrans()とstr.translate()

英数字に関しては、Pythonの標準モジュールでも全角⇔半角ができました。

メイクトランス str.maketrans()トランスレート str.translate() を使った方法です。

組み込み型 — Python

static str.maketrans(x[, y[, z]])

str.translate(table)

はじめに、変換テーブルを作ります。

変換テーブル = str.maketrans('aA0', 'aA0')

これをトランスレートメソッド .translate() に渡すと、変換できました。

'aA0'.translate(変換テーブル)

実行結果
'aA0'

変換テーブルは、事前にfor文の外で定義しておいて、使いまわすのがいいと思います。

なるべく外部モジュールを使わずに、標準モジュールだけで書きたいときに使っています。

全角⇔半角変換のほかにも、カッコや記号の種類をまとめて置換したいときに便利でした。

リプレース .replace() が3つ以上連続しちゃったときは、メイクトランス .maketrans() とトランスレート .translate() に書き換えてみるというのも、おすすめのアプローチです。

半角の英数字リストを出すコード

変換テーブルの作成には、半角の英数字リストがあると便利です。

以下のstringモジュールをインポートして使います。

string — 一般的な文字列操作 — Python
string.ascii_letters
string.ascii_lowercase
string.ascii_uppercase
string.digits

半角の英数字リストは、以下のPythonコードで出せました。

import string

print('[string.ascii_letters]')
print(string.ascii_letters)

print('\n[string.ascii_lowercase]')
print(string.ascii_lowercase)

print('\n[string.ascii_uppercase]')
print(string.ascii_uppercase)

print('\n[string.digits]')
print(string.digits)

実行結果

[string.ascii_letters]
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

[string.ascii_lowercase]
abcdefghijklmnopqrstuvwxyz

[string.ascii_uppercase]
ABCDEFGHIJKLMNOPQRSTUVWXYZ

[string.digits]
0123456789

これらをもとに、テキストエディタや jaconv で全角の英数字リストを作ります。

自分はこのようにして、変換テーブルを作りました。

Python は初めから便利なライブラリがそろっていて、とてもありがたいです。

全角⇔半角の変換ライブラリはおすすめ

自分がPythonでテキスト分析をしていた時のことです。

ウェブページのHTMLや、開示情報PDFのテキストを読み込んでいると、どうしても表記ゆれが問題になりました。

そこで、英数字を半角に統一して、半角カナを全角に統一することにしました。

これで、テキスト検索や単語の数を数える処理が、より正確に、より効率的になりました。

あと、全角カッコも半角カッコに統一しました。

特に、開示情報リストなど、Excelで見るようなものは、省スペースで済む半角文字に変換しました。

Excelの表がとてもコンパクトになりました。

全角と半角を相互に変換するライブラリは、文字列処理で非常に有用でした。

まずは、jaconvmojimoji を試してみるのがおすすめです。

そして、英数字に関しては、メイクトランス .maketrans()トランスレート .translate() もおすすめです。

Pythonの標準モジュールだけで簡単に実装することができました。

タイトルとURLをコピーしました