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の独学を効率よく行いたい方は、以下の記事が参考になるので、ぜひ併せて読んでみてください。
「なんか今の仕事合わないな・・・」
「IT業界に転職してみたいなぁ・・・」
という方、DMMが運営する「WEBCAMP エンジニア転職」をご検討してみてはいかがですか?

「WEBCAMP エンジニア転職」では最短12週間でITエンジニアを目指すことが可能です!
WEBCAMPの卒業生は転職後に年収もUP!(例:年収250万円→500万円)
しかも今なら受講料の最大70%が給付金として支給されます。
DMM WEBCAMPは経済産業省・厚生労働省が認定した専門実践教育訓練給付金制度の対象です
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)が便利です。
ワイルドカードや文字クラスなど正規表現の力を借りて、一度に複雑な置換を行えます。
この章では、それらの使い方をコード付きで詳しく解説していきます。
①:sub関数のキホンの使い方
正規表現を使った置換では、re.sub が基本です。部分一致でパターンを指定できるため、数字や特定の文字列をまとめて置換したい場合に威力を発揮します。
元の文字列は変更されず、新しい文字列が返る点も replace と同じ仕様です。
import re
text = "user123 posted 456 comments"
result = re.sub(r"\d+", "#", text)
print(result)
実行結果:
user# posted # comments
上記では、r”\d+” は1つ以上の数字にマッチしており、マッチ部分を “#” に置換しています。
②:複数の文字列を同じ文字列に置換
複数の候補をひとまとめに置換したいときは、正規表現の「OR(|)」を使います。
複数パターンを1行で指定できるので、コードがスッキリするのがメリットです。
import re
text = "cat dog bird cat dog"
result = re.sub(r"(cat|dog)", "pet", text)
print(result)
実行結果:
pet pet bird pet pet
「(cat|dog)」 で「cat または dog」にマッチし、マッチ部分を「pet」に一括置換しています。
このように複数候補を効率よくまとめて書き換えできるので便利です。
③:一致した文字列の置換
正規表現で特定のパターンを見つけ、その部分だけを別の文字列に置き換えたい場合は re.sub が便利です。
一致部分だけをピンポイントで変換できるため、文章中の特定語句やフォーマットを柔軟に置き換えられます。
import re
text = "Price: $100, Discount: $20"
result = re.sub(r"\$\d+", "¥", text)
print(result)
実行結果:
Price: ¥, Discount: ¥
上記、パターン \$\d+ は「$ に続く数字」を意味しています。
マッチした全ての箇所を “¥” に置換しており、部分一致で対象だけを置き換えられることがわかります。
④:置換処理された文字列の取得
re.subn を使うと、置換後の文字列と置換が実行された回数の両方を取得できます。変更量を確認したい場面で役立ちます。
import re
text = "apple apple banana"
new_text, count = re.subn("apple", "orange", text)
print(new_text)
print("置換回数:", count)
実行結果:
orange orange banana
置換回数: 2
サンプルコード内、
re.subn(pattern, repl, string)
は (置換後文字列、 回数) のタプルを返しています。
何回置換が行われたかを簡単に把握できるので、ログ出力やデバッグを行う際に便利です。
⑤:位置を指定して置換・スライス
部分的にだけ文字列を置換したい場合は、正規表現単独では難しいことがあります。
そんなときは、文字列をスライスで切り出してから re.sub を使うと、任意の位置だけを変更できます。
文章全体ではなく特定範囲だけをピンポイントで置き換えることが可能になるので便利です。
import re
text = "foo123bar456baz"
# インデックス4~10だけ置換
segment = text[4:10]
updated = text[:4] + re.sub(r"\d+", "#", segment) + text[10:]
print(updated)
実行結果:
foo###bar456baz
上記のコードでは、
text[4:10]
で文字列の5文字目から10文字目を抽出しています。
その区間だけ正規表現 \d+(数字列)を “#” に置換し、元の前半(text[:4])と後半(text[10:])をつなぎ直し、部分置換を実現しています。
まとめ:replaceとsub関数をうまく活用しよう
ここまで紹介したような文字列置換は、データ整形やログ加工、ユーザー入力のクレンジングなど日常的に使う基本スキルです。
- 単純な置換には `replace`
- 複雑なパターンや部分一致が必要なときは `re.sub`/`re.subn`
- 1文字ずつまとめて置き換えたい場合は `translate`
など使い分けることで、効率よくコードを書けます。
どれも標準ライブラリだけで完結し、余計な外部依存が不要なのが魅力です。
この記事で紹介したサンプルを参考に、用途に合わせてメソッドを使い分ける習慣を身につければ、文字列処理の自信が自然と高まるでしょう。
今すぐ手を動かして、Pythonの文字列置換マスターを目指しましょう!
なお、記事を読んでも理解ができなかったり、そもそも独学に自信がない方は、ぜひDMM WEBCAMPが運営する「Pythonコース」をご検討ください。
こちらはプロ講師が丁寧にサポートしてくれるオンライン学習サービスで、業界最前線の実践カリキュラムで挫折せずステップアップでき、学び終えた後すぐに使えるスキルが身につきます。
さらに国の「リスキリング補助金」を活用すれば、受講費用が最大70%、金額にして213,054円のキャッシュバックが適応されるため、費用負担を抑えて安心して始められます。
まずは以下のリンクから無料相談をしてみて、自分に合った学習プランを確認してみましょう!