Pythonで文字列を置換する:replace()メソッドの使い方と回数指定

テキストデータを処理する際、特定の文字を削除したり、別の言葉に置き換えたりする操作は非常に頻繁に行われます。

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 回だけ置換します。
  • 文字列の削除を行いたい場合は、置換後の文字に空文字 "" を指定します。
  • 元の文字列は変更されないため、結果を変数に代入して使用します。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次