Pythonでre.sub を使用して正規表現で平仮名、カタカナ、漢字を置換のイメージ画像

Pythonでre.sub を使用して正規表現で平仮名、カタカナ、漢字を置換

  • 公開日:2018/07/02
  • 更新日:2019/01/30
  • 投稿者:n bit

Pythonで正規表現を使った文字列の置換を行うときにはre.subメソッドを利用します。今回はre.subメソッドを使用して、正規表現で日本語の「平仮名(ひらがな)」や「カタカナ」、「漢字」を指定した文字列の置き換え方法を解説します。

  • Python

この記事は約 分で読めます。(文字)

re.sub を使用して正規表現で「平仮名(ひらがな)」や「カタカナ」、「漢字」を置換する

Pythonで正規表現を使った文字列の置換を行うときには『re.sub』メソッドを利用します。『re.sub』メソッドの指定方法は以下の通りです。

  • 置換された文字列 = re.sub(検索する正規表現, 置換え文字列, 置換対象の文字列)

必要に応じて置換え回数を指定する『count』や、置換え時の動作を変更する『flags』などを利用します。

それでは実際に『re.sub』メソッドと、正規表現を利用してアルベルト・アインシュタインの名言から日本語の「平仮名(ひらがな)」や「カタカナ」、「漢字」を置き換えてみましょう。

Note

アルベルト・アインシュタインの名言の1文

『挫折を経験した事がない者は、

何も新しい事に挑戦したことが無いということだ。

- アルベルト・アインシュタイン -』

re.sub を使用して正規表現で「平仮名(ひらがな)」を置換する

最初に『re.sub』メソッドを利用するために『re』モジュールをインポートします。

import re

文字列内の『平仮名(ひらがな)』を指定する正規表現は『[ぁ-ん]』です。『re.sub』メソッドの第1引数に『[ぁ-ん]』を指定して文字列をアルファベットの『a』に置き換えてみましょう。

import re


text = '''挫折を経験した事がない者は、
何も新しい事に挑戦したことが無いということだ。
- アルベルト・アインシュタイン -'''

text_new = re.sub('[ぁ-ん]', 'a', text)
print(text_new)

出力結果

挫折a経験aa事aaa者a、

何a新aa事a挑戦aaaaa無aaaaaaa。
- アルベルト・アインシュタイン -

文字列内の『平仮名(ひらがな)』が置き換えられたことが確認できます。

文字列内の『平仮名(ひらがな)』を削除

例えばこの方法を利用して文字列内の『平仮名(ひらがな)』を全て削除するといったことも可能です。

先ほど、第二引数にアルファベットの『a』を記述していましたが、削除して『''』何もなしに書き換えてください。

import re


text = '''挫折を経験した事がない者は、
何も新しい事に挑戦したことが無いということだ。
- アルベルト・アインシュタイン -'''

text_new = re.sub('[ぁ-ん]', '', text)
print(text_new)

出力結果

挫折経験事者、

何新事挑戦無。
- アルベルト・アインシュタイン -

文字列内の『平仮名(ひらがな)』が全て削除されて漢文みたいになりましたね。

re.sub を使用して正規表現で「カタカナ」を置換する

次は『re.sub』メソッドと正規表現を使って『カタカナ』を置き換えてみましょう。『カタカナ』を指定する正規表現は『[ァ-ン]』です。

import re


text = '''挫折を経験した事がない者は、
何も新しい事に挑戦したことが無いということだ。
- アルベルト・アインシュタイン -'''

text_new = re.sub('[ァ-ン]', 'a', text)
print(text_new)

出力結果

挫折を経験した事がない者は、

何も新しい事に挑戦したことが無いということだ。
- aaaaa・aaaaaaaa -

『カタカナ』だった名前『アルベルト・アインシュタイン』が『aaaaa・aaaaaaaa』に置き換えられていることが確認できます。

re.sub を使用して正規表現で『漢字』を置換する

次は『re.sub』メソッドと正規表現を使って『漢字』を置き換えてみましょう。『漢字』を指定する正規表現は『[一-龥]』です。『re.sub』メソッドの第1引数に『[一-龥]』を指定して文字列を『〇』記号に置き換えてみましょう。

import re


text = '''挫折を経験した事がない者は、
何も新しい事に挑戦したことが無いということだ。
- アルベルト・アインシュタイン -'''

text_new = re.sub('[一-龥]', '〇', text)
print(text_new)

出力結果

〇〇を〇〇した〇がない〇は、

〇も〇しい〇に〇〇したことが〇いということだ。
- アルベルト・アインシュタイン -

文字列内の『漢字』が全て『〇』記号に置換えされて穴埋め問題みたいになりましたね。

今日のdot

文字列内の『平仮名(ひらがな)』を指定する正規表現は『[ぁ-ん]』、『カタカナ』を指定する正規表現は『[ァ-ン]』、『漢字』を指定する正規表現は『[一-龥]』です。

  • 平仮名:[ぁ-ん]
  • カタカナ:[ァ-ン]
  • 漢字:[一-龥]

それぞれの正規表現は組み合わせて同時に利用することもできます。

組み合わせて同時に利用するには同じ角括弧『[]』内に半角スペースを空けて記述しましょう。組み合わせパターンは自由です。

import re


text = '''挫折を経験した事がない者は、
何も新しい事に挑戦したことが無いということだ。
- アルベルト・アインシュタイン -'''

text_new = re.sub('[ァ-ン 一-龥]', '〇', text)
print(text_new)

出力結果

〇〇を〇〇した〇がない〇は、

〇も〇しい〇に〇〇したことが〇いということだ。
- 〇〇〇〇〇・〇〇〇〇〇〇〇〇 -