文字列

【Python】文字列を置換する方法

【Python】文字列を置換する方法

Pythonで文字列を置換する方法を解説します。

文字列を置換する方法

プログラミングでは、文字列を別の文字列に置換する(置き換える)必要がある場合がよくあります。Pythonでは、replacetranslatereモジュールの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通りの方法があります。

  1. 辞書で置換ルールを作成する方法
  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では、replacetranslatereモジュールのsubを使って文字列の置換ができます。単純な文字列の置換であればreplacetranslateを用いることで十分と考えられますが、より複雑なパターンマッチングや条件付き置換の場合には、reモジュールのsubを使用するといったように、目的に合わせて使用を検討するようにしてみてください。

各メソッドをうまく使いこなして適切に文字列置換ができるようになってもらえればと思います。

Note