ホーム › やりたいこと逆引き › Python › 文字列を置換する(replace)
PYTHON HOWTO

Pythonで文字列を置換する方法

Pythonで文字列を置換する方法を、replace・回数指定・複数パターンの一括置換・re.sub による正規表現置換・改行や空白の除去まで実行しながら確認できます。 下のコードはブラウザ内でそのまま実行でき、「実行エディタで開く」を押すとprogoのオンラインPython実行環境にコードが読み込まれます。

サンプルコード

s = "a-b-a-b"
print(s.replace("a", "X"))      # X-b-X-b
print(s.replace("a", "X", 1))   # X-b-a-b(1回だけ)
▶ このコードを実行エディタで開く
progoのPython実行環境(インストール不要・登録不要)でそのまま動かせます。

ポイント解説

複数の文字列をまとめて置換する

# 1) replace をつなげる
s = "2026/09/04"
print(s.replace("/", "-"))            # 2026-09-04

# 2) 辞書とループで一括置換
text = "猫と犬と鳥"
table = {"猫": "cat", "犬": "dog", "鳥": "bird"}
for k, v in table.items():
    text = text.replace(k, v)
print(text)                            # catとdogとbird

# 3) 1文字ずつの変換は translate が速い
print("abcabc".translate(str.maketrans({"a": "1", "b": "2"})))  # 12c12c

正規表現で置換する(re.sub)

import re

# 連続する空白を1つにまとめる
print(re.sub(r"\s+", " ", "a   b\t c"))      # "a b c"

# 数字をすべて削除する
print(re.sub(r"\d", "", "a1b2c3"))            # "abc"

# 電話番号のハイフンを除去
print(re.sub(r"[-()\s]", "", "03-1234-5678")) # "0312345678"

# マッチした部分を関数で加工(大文字化)
print(re.sub(r"[a-z]+", lambda m: m.group().upper(), "hello world"))  # HELLO WORLD

改行・空白・特定の文字を消す

s = "  Hello \n"
print(s.replace("\n", "").strip())    # "Hello"(前後の空白も除去)
print("a,b,,c".replace(",", ""))       # "abc"

先頭・末尾だけ置き換えたいとき

name = "test_sample_test"
# 末尾の "_test" だけ消す
print(name[:-5] if name.endswith("_test") else name)   # test_sample
# Python 3.9+ なら removeprefix / removesuffix
print(name.removesuffix("_test"))                        # test_sample
print(name.removeprefix("test_"))                        # sample_test