テキストデータを処理する際、特定の文字を削除したり、別の言葉に置き換えたりする操作は非常に頻繁に行われます。
Pythonの文字列(str型)には、このための標準メソッドとして replace() が用意されています。このメソッドを使うことで、単純な全置換から、回数を指定した部分的な置換までを簡単に行うことができます。
この記事では、replace() メソッドの基本的な使い方と、置換回数を制限する方法について解説します。
replace() メソッドの基本構文
replace() メソッドは、文字列の中から「検索したい部分文字列」を探し、それを「新しい文字列」に置き換えた新しい文字列を返します。
構文:
新しい文字列 = 元の文字列.replace(置換したい文字, 新しい文字)
具体的な使用例:不要な文字の削除
電話番号のデータから、ハイフン(-)を取り除いて数字だけの文字列にする例です。
# ハイフン付きの電話番号
phone_number = "090-1234-5678"
# ハイフン "-" を 空文字 "" に置換(削除)する
clean_number = phone_number.replace("-", "")
print(f"元の文字列: {phone_number}")
print(f"置換後の文字列: {clean_number}")
実行結果:
元の文字列: 090-1234-5678
置換後の文字列: 09012345678
デフォルトでは、該当する文字が複数ある場合、そのすべてが置換されます。
置換回数を指定する (count 引数)
replace() メソッドの第3引数に整数(count)を渡すと、先頭から指定した回数だけ置換を行うことができます。
構文:
新しい文字列 = 元の文字列.replace(置換したい文字, 新しい文字, 回数)
具体的な使用例:先頭のみの修正
システムログのメッセージにおいて、最初に出現する “Error” だけを “Warning” に変更し、2つ目以降はそのまま残したい場合の例です。
# 複数の "Error" を含むログメッセージ
log_message = "[Error] Connection failed. Error code: 500"
# 最初の1つだけ "Warning" に置換する
updated_log = log_message.replace("Error", "Warning", 1)
print(f"修正前: {log_message}")
print(f"修正後: {updated_log}")
実行結果:
修正前: [Error] Connection failed. Error code: 500
修正後: [Warning] Connection failed. Error code: 500
最初の [Error] は [Warning] に変わりましたが、後ろにある Error code の部分は変更されていないことが確認できます。
注意点:元の文字列は変更されない(非破壊的)
Pythonの文字列は「イミュータブル(変更不可能)」です。そのため、replace() メソッドを実行しても、元の変数の中身は書き換わりません。
置換結果を利用するには、必ず新しい変数に代入するか、元の変数に再代入する必要があります。
text = "apple, banana, cherry"
# これだけでは text は変わらない
text.replace("banana", "grape")
print(f"代入なし: {text}")
# 変数に代入することで結果を保持できる
text = text.replace("banana", "grape")
print(f"代入あり: {text}")
実行結果:
代入なし: apple, banana, cherry
代入あり: apple, grape, cherry
まとめ
str.replace(old, new): 文字列内のoldをすべてnewに置換します。str.replace(old, new, count): 先頭からcount回だけ置換します。- 文字列の削除を行いたい場合は、置換後の文字に空文字
""を指定します。 - 元の文字列は変更されないため、結果を変数に代入して使用します。
