Pythonで特定の文字列を別の文字列に置き換える方法を解説します。
Contents
特定の部分文字列を別の文字列に置き換える ~ replace ~
Pythonで文字列に含まれている特定の部分文字列を別の文字列に置き換える場合には、strクラスのreplaceメソッドを使用します。
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メソッドを使用すれば簡単に部分文字列の変換ができます。
replaceメソッドの公式ドキュメントの記載はこちらを参照してください。
特定の文字(群)を変換/削除する ~ translate ~
文字列に含まれる特定の文字(群)を変換や削除したい場合には、replaceメソッドよりもtranslateメソッドを使用します。
ここで、特定の文字(群)を変換/削除と言っているのは、例えば以下の例に示すように、指定した特定の文字を一定のルールで変換/削除するというようなイメージを持ってもらえればよいです。
なお、変換/削除のルールはstr.maketransメソッドを使用して作成し、そのルールをtranslateメソッドに渡すことで変換/削除を実行します。
「,」→「、」
「.」→「。」
「〇」「△」「□」→削除
translateおよびstr.maketransメソッドの使用方法としては、以下の2通りの方法があります。
- 辞書で変換ルールを作成する方法
- 変換前文字(群)と変換後文字(群)を指定する方法
以降でそれぞれの方法について簡単な例を使って使い方を紹介します。
(1)辞書で変換ルールを作成する方法
辞書を用意し、str.maketransメソッドで変換/削除ルールを作成し、translateメソッドで変換/削除する場合には以下の例のように実行します。
# 変換/削除ルール辞書を作成して変換/削除する sample_text = 'translateメソッドは,文字(群)を△変換/□削除します〇.' trans_dict = { ',': '、', '.': '。', '〇': '', '△': '', '□': '' } print(sample_text.translate(str.maketrans(trans_dict)))
【実行結果】 translateメソッドは、文字(群)を変換/削除します。
辞書を使う場合には、変換/削除用のルール辞書を用意し、キーに変換前の文字、値に変換後の文字を指定します。削除をしたい場合には、値に''(空文字)を指定します。
あとは用意した辞書をstr.maketransメソッドに渡し、その結果をtranslateメソッドに渡すことで変換/削除ルールに従って変換/削除を実行することができます。
(2)変換前文字(群)と変換後文字(群)を指定する方法
辞書ではなく、直接変換前の文字(群)と変換後の文字(群)をstr.maketransメソッドに指定することで変換/削除ルールを作成し、translateメソッドで変換/削除する場合には以下の例のように実行します。
# メソッドに直接指定する sample_text = 'translateメソッドは,文字(群)を△変換/□削除します〇.' print(sample_text.translate(str.maketrans(',.', '、。', '〇△□')))
【実行結果】 translateメソッドは、文字(群)を変換/削除します。
直接指定する場合は、str.maketransメソッドの引数に以下を指定します。
- 第1引数:変換前の文字群
- 第2引数:変換後の文字群
- 第3引数:削除対象の文字群
それぞれの引数には、対象文字を列挙した文字列を指定します。変換前と変換後の文字群は変換する文字の位置を一致させるようにします。例えば、上記例だと','が変換されるのは'、'ということになります。
str.maketransメソッドの結果をtranslateメソッドに渡すことで変換/削除ルールに従って変換/削除を実行することができます。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。