Pythonで文字列を置換(replace, translate, re.sub)
この記事では、Pythonで文字列を置換する3つの主要な方法である`replace()`、`translate()`、`re.sub()`について、それぞれの特徴、使い分け、そして具体的なコード例を交えて徹底的に解説します。
目次
replace()メソッド:シンプルな文字列置換
replace()メソッドは、文字列中の特定の文字列を別の文字列に置き換える最も基本的な方法です。引数は、置換対象の文字列、置換後の文字列、そしてオプションで置換回数です。
text = "hello world"
new_text = text.replace('world', 'Python')
print(new_text) # 出力: hello Python
オプションで第三引数に置換回数を指定することもできます。
text = "apple apple apple"
new_text = text.replace('apple', 'banana', 2)
print(new_text) # 出力: banana banana apple
translate()メソッド:複数文字の一括置換
translate()メソッドは、文字列中の複数の文字を一括で置換するのに適しています。事前に変換テーブルを作成する必要があります。
text = "hello, world!"
trans_table = str.maketrans('hel', '123')
new_text = text.translate(trans_table)
print(new_text) #出力: 12lo, world!
str.maketrans()は、置換前の文字列と置換後の文字列を対応づけた辞書を作成します。
re.sub()関数:正規表現を使った高度な置換
re.sub()関数は、正規表現を用いて文字列を置換します。複雑なパターンマッチングや置換が必要な場合に非常に強力です。
import re
text = "私の電話番号は090-1234-5678です。"
new_text = re.sub(r"\d{3}-\d{4}-\d{4}", "XXX-XXXX-XXXX", text)
print(new_text) # 出力: 私の電話番号はXXX-XXXX-XXXXです。
正規表現を用いることで、より柔軟で高度な文字列置換が可能です。
それぞれのメソッドの比較と使い分け
replace(): 単純な置換に最適。高速で簡潔。 translate(): 複数の文字を一度に置換する場合に効率的。 re.sub(): 正規表現を使った高度な置換が必要な場合に強力。ただし、replace()やtranslate()より処理速度は遅くなる可能性がある。
実践的なコード例
複数の置換を組み合わせた例
import re
text = "This is a sample text with multiple replacements needed."
text = text.replace('This', 'That')
text = text.replace('sample', 'example')
new_text = re.sub(r'\btext\b', 'string', text)
print(new_text) #出力: That is an example string with multiple replacements needed.
関連記事
- Pythonで文字列を分割(split, rsplit, splitlines)
- Pythonで文字列を検索(find, rfind, index, rindex)
- Pythonで文字列を中央寄せ・左寄せ・右寄せ(center, ljust, rjust)
- Pythonで文字列をフォーマット(format, f文字列 (Python 3.6以降), %演算子)
- Pythonで文字列の大文字・小文字を変換(upper, lower, capitalize, title, swapcase)
- Pythonで文字列の先頭・末尾の空白を削除(strip, lstrip, rstrip)
- Pythonで文字列の先頭と末尾が特定の文字列か判定(startswith, endswith)
- Pythonで文字列の出現回数をカウント(count)
- Pythonで文字列をスライスで部分抽出
- Pythonで文字列を結合(join, +演算子)