Pythonのreplaceとは何か?置換の方法とサンプルコードを解説!

Pythonで文字列を扱うとき、「ある文字を別の文字に置き換えたい」と思った経験はありませんか?そんなときに役立つのが、標準で備わっているメソッド「replace」です。
でもこの「replace」は単純な置換だけでなく、回数指定や複数同時置換、さらには改行の扱いまで、意外と奥が深いのです。
本記事では、基本から一歩踏み込んだテクニックまで、実際に手を動かしながらわかりやすく解説していきます。
Pythonのreplaceとは?
Pythonのreplaceというのは、文字列(str型)内の特定の部分文字列を別の文字列に置き換えるための組み込みメソッドのことです。元の文字列は変更されず、新しい文字列が返されます。
例えば、ファイル名の拡張子を一括で変更したいときや、不要なスペースや改行を取り除きたいときなどに便利です。
基本構文
new_string = original_string.replace(old, new[, count])
- original_string:置換対象の元となる文字列
- old:置換したい文字列
- new:置き換える文字列
- count(省略可):置換を行う最大回数(指定しない場合はすべて置換)
例:
text = “apple banana apple”
result = text.replace(“apple”, “orange”, 1)
print(result) # 出力: “orange banana apple”
実行結果:
orange banana apple
なお、よりPythonの独学を効率よく行いたい方は、以下の記事が参考になるので、ぜひ併せて読んでみてください。
Pythonにおけるreplaceの使い方
この章では、Pythonにおけるreplaceの使い方について、以下の項目の順に解説していきます。
- 基本の使い方
- 最大痴漢回数の指定
- 複数の文字列の置換
- 文字列の交換(スワップ)
- 改行文字の置換
①:基本の使い方
replaceメソッドは、文字列中の指定した部分を別の文字列に置き換えるシンプルな方法です。以下はもっとも基本的な使い方の例です。
text = “hello world”
new_text = text.replace(“world”, “Python”)
print(new_text)
実行結果:
hello Python
上記では、
text.replace(“world”, “Python”)
で「world」を「Python」に置き換えています。
元の text は変更されず、新しい文字列が「new_text」に格納されます。
②:最大置換回数の指定
replaceメソッドは第三引数に置換する最大回数を指定できます。
これを使うと、文字列の先頭から順に指定回数だけ置き換え、残りはそのまま残せます。
text = “cat cat cat dog”
updated = text.replace(“cat”, “lion”, 2)
print(updated)
実行結果:
lion lion cat dog
この例では「apple」を「banana」に置き換えていますが、最大回数を 2 に設定したため、最初の2つだけが変換されました。
3つ目の「apple」はそのまま残るので、一部分だけ置換したい場面で役立つというわけです。
③:複数の文字列の置換
複数の単語を一度に置き換えたいときは、replace を連続して呼び出すだけで実現できます。
シンプルかつ直感的に複数のパターンを処理できます。
sentence = “dog cat bird”
updated = sentence.replace(“dog”, “wolf”).replace(“bird”, “eagle”)
print(updated)
実行結果:
wolf cat eagle
1行目で元の文字列を定義し、2行目で「dog」を「wolf」、続けて「bird」を「eagle」に置換しています。
チェーンするだけで複数の置換を同時に実行できるため、手軽に文字列を整形したいときに役立ちます。
④:文字列の交換(スワップ)
同じ文字列同士を入れ替えるには、一時的なプレースホルダーを使って競合を避けます。
text = “red blue green”
swapped = text.replace(“blue”, “__temp__”) \
.replace(“red”, “blue”) \
.replace(“__temp__”, “red”)
print(text, “→”, swapped)
実行結果:
red blue green → blue red green
まず「blue」を一時的に「__temp__」に置き換え、次に元の「red」を「blue」に変更しています。
最後に「__temp__」 を「red」に戻しています。この手順なら、置換対象が互いに重なっていても正しく入れ替えできます。
⑤:改行文字の置換
文字列内の改行(\n)を別の文字列に置き換えることで、1行にまとめたり特定の区切り記号に変換できます。
text = “first line\nsecond line\nthird line”
single_line = text.replace(“\n”, ” | “)
print(single_line)
実行結果:
first line | second line | third line
上記では、「\n」(改行コード)」を「 | 」 に置き換えています。
改行をスペースやカンマ、パイプなど任意の区切り文字に変えることで、ログ整形やCSV形式への変換などが簡単になります。
>>DMM WEBCAMP Pythonコースの詳細はこちら
複数の文字を指定して置換するときは「translate」
translateメソッドは、1文字ずつ別の文字に置換したい場合に最適な手段です。
複数の文字をまとめて変換できるため、replaceを何度も呼び出すより効率的でシンプルに処理できます。
①:translateの基本の使い方
translateは、一般的に以下のように用いられます。
mapping = str.maketrans(“abc”, “123”)
result = “abc cab”.translate(mapping)
print(result)
実行結果:
123 312
上記の例では、
str.maketrans(“abc”, “123”)
で ‘a’→’1’, ‘b’→’2’, ‘c’→’3’ の変換表を作成します。
そして、
.translate(mapping)
を呼び出すと、文字列中の該当文字が一括で置換されます。
②:文字列の交換(スワップ)
translateを使えば、文字列の交換を行うことも可能です。以下のサンプルコードを見てみましょう。
mapping = str.maketrans({“x”: “y”, “y”: “x”})
result = “x y z”.translate(mapping)
print(result)
実行結果:
y x z
上記は辞書形式で置換ルールを定義し、”x” と “y” を相互に入れ替えています。
translate は一時プレースホルダーを使わずに直接スワップできるため、replace よりシンプルに書けるのが特徴です。
なおPythonのエラーが解決できなかったり、そもそも環境構築でつまづきスタートすらできていない方は、モチベーションが低下して挫折しそうになるものです。
そのような方は、ぜひ一度以下の記事をご一読いただき、参考にしてみてください。
正規表現で文字列を置換するときは「re.sub」「re.subn」(sub関数)
文字列置換で「完全一致」ではなく、パターンにマッチした部分を柔軟に変えたい場合は、re モジュールの sub(および戻り値と置換数を返す subn)が便利です。
ワイルドカードや文字クラスなど正規表現の力を借りて、一度に複雑な置換を行えます。
この章では、それらの使い方をコード付きで詳しく解説していきます。