🐍 Python
str.replace(old, new, count=-1)
文字列中の部分文字列oldをnewにすべて置き換えるメソッドです。日付の区切り文字を変えたり、パスの区切りを変換したりと、文字列整形処理の中心的な存在です。
構文: str.replace(old, new, count=-1)
戻り値: 置換後の新しい文字列
基本の使い方
一致した部分文字列をすべて置き換えます。
s = "2026/08/09"
print(s.replace("/", "-")) # '2026-08-09'
countで置換回数を制限する
第3引数countに数値を渡すと、先頭から数えてその回数分だけ置換し、残りはそのままにします。
s = "aaa"
print(s.replace("a", "b", 2)) # 'bba'
空白をすべて除去する(strip()との違いに注意)
replace(" ", "")とすると、文字列中のすべての空白を除去できます。ただし前後だけでなく途中の空白もすべて消える点がstrip()と違うため、意図をよく確認してから使う必要があります。
s = " Hello, World! "
print(s.replace(" ", "")) # 'Hello,World!'
実用例:メールアドレスの一部をマスキングする
スライスと組み合わせて、個人情報の一部を隠す簡易マスキングもよく書かれるパターンです。
email = "user@example.com"
local, domain = email.split("@")
print(local[0] + "***@" + domain) # 'u***@example.com'
パラメータ
- old
- 置換対象となる部分文字列
- new
- 置き換え後の文字列
- count(省略可)
- 先頭から置換する最大回数。省略時(-1)はすべて置換する
💡 複雑なパターンには正規表現のre.subを使う
str.replace()は「決まった文字列」の置換しかできません。「数字ならなんでも」「メールアドレスの形式ならなんでも」のようにパターンで置換したい場合はre.subを使います。AIが生成したコードでreplace()を何度も連鎖させて複雑な置換をしている場合、re.sub1行で書き直せることが多いです。