Pythonで文字列を置換する方法を解説します。
Contents
文字列を置換する方法
プログラミングでは、文字列を別の文字列に置換する(置き換える)必要がある場合がよくあります。Pythonでは、replace
、translate
やre
モジュールのsub
を使って文字列を置換することができます。
本記事では、文字列を置換する各種方法について例を使って説明します。
部分文字列を別の文字列に置換する replace
Pythonで文字列に含まれている特定の部分文字列を別の文字列に置き換える場合には、replace
メソッドを以下のように使用します。
sample_text = "Pythonプロジェクトを作成してPythonを学習しよう!" print(sample_text.replace("Python", "Java")) print(sample_text.replace("Python", "Java", 1))
【実行結果】 Javaプロジェクトを作成してJavaを学習しよう! Javaプロジェクトを作成してPythonを学習しよう!
上記例では、対象文字列であるsample_text
の中に含まれる「Python
」という部分文字列を「Java
」という文字列に置き換えています。なお、第3引数に置換する数を指定すると、先頭から指定数だけを置換することができます。
また、replace
メソッドは文字列を置換した新しい文字列を返却し、元の文字列は変更されない点に注意しましょう。
文字(群)を置換/削除する translate
文字列に含まれる特定の文字(群)を置換/削除したい場合には、replace
メソッドよりもtranslate
メソッドを使用するのが便利です。特に大規模な文字(群)の置換や削除には適しており、replace
よりも性能が優れている場合があります。
ここで、特定の文字(群)を置換/削除と言っているのは、例えば以下の置換/削除のルール例に示すように、指定した特定文字を一定のルールで置換/削除するというようなイメージを持ってもらえればと思います。
「,」→「、」
「.」→「。」
「〇」「△」「□」→削除
置換/削除のルールはstr.maketrans
メソッドを使用して作成できます。作成したルールをtranslate
メソッドに渡すことで置換/削除ができるようになります。なお、replace
メソッドと同様に、translate
も文字列を置換した新しい文字列を返却し、元の文字列は変更されない点に注意しましょう。
translate
およびstr.maketrans
メソッドを使用した方法としては以下の2通りの方法があります。
- 辞書で置換ルールを作成する方法
- 置換前文字(群)、置換後文字(群)、削除文字(群)を指定する方法
以降では、それぞれの方法について簡単な例を使って使い方を紹介します。
辞書で置換ルールを作成する方法
辞書で置換ルールを作成する場合は、以下の例のようにします。
sample_text = "translateメソッドは,文字(群)を△置換/□削除します〇." # 置換/削除ルール辞書を作成して置換/削除する trans_dict = { ",": "、", ".": "。", "〇": "", "△": "", "□": "", } print(sample_text.translate(str.maketrans(trans_dict)))
【実行結果】 translateメソッドは、文字(群)を置換/削除します。
まずは置換ルール用の辞書を用意します。キーに置換前の文字列、値に置換後の文字列を指定します。置換前の文字列を削除したい場合は、値に""
(空文字)を指定します。
作成した辞書をstr.maketrans
メソッドに渡した結果を、対象文字列のtranslate
メソッドに渡すことで、辞書で指定した置換/削除ルールに従って実行することができます。
置換前文字(群)、置換後文字(群)、削除文字(群)を指定する方法
str.maketrans
メソッドに、置換前文字(群)、置換後文字(群)、削除文字(群)を引数として直接指定する場合には以下のようにします。
sample_text = "translateメソッドは,文字(群)を△置換/□削除します〇." # メソッドに直接指定する print( sample_text.translate( str.maketrans( ",.", "、。", "〇△□", ) ) )
【実行結果】 translateメソッドは、文字(群)を置換/削除します。
直接指定する場合は、str.maketrans
メソッドの引数に以下を指定します。
- 第1引数:置換前の文字群
- 第2引数:置換後の文字群
- 第3引数:削除対象の文字群
それぞれの引数には、対象文字を列挙した文字列を指定します。置換前と置換後の文字群は置換する文字の位置を一致させるようにします。例えば、上記例だと","
が置換されるのは"、"
ということになります。
str.maketrans
メソッドの結果を対象文字列のtranslate
メソッドに渡すことで、置換/削除ルールに従って実行することができます。
正規表現に一致する部分を置換する
正規表現に一致する部分を置換したい場合は、re
モジュールのsub
を使用することができます。「正規表現モジュール re の基本的な使い方」で紹介していますので、そちらを参考にしてください。
まとめ
Pythonで文字列を置換する方法を解説しました。
Pythonでは、replace
、translate
やre
モジュールのsub
を使って文字列の置換ができます。単純な文字列の置換であればreplace
やtranslate
を用いることで十分と考えられますが、より複雑なパターンマッチングや条件付き置換の場合には、re
モジュールのsub
を使用するといったように、目的に合わせて使用を検討するようにしてみてください。
各メソッドをうまく使いこなして適切に文字列置換ができるようになってもらえればと思います。
replace
メソッドの公式ドキュメントはこちらを参照してください。translate
メソッドの公式ドキュメントはこちらを参照してください。str.maketrans
メソッドの公式ドキュメントはこちらを参照してください。re
モジュールのsub
については「正規表現モジュール re の基本的な使い方」を参考にしてください。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。