Pythonで文字列を置換するには?replace()の使い方と正規表現の活用例
生徒
「先生、Pythonで文字列の一部を他の文字に変えたいときって、どうやるんですか?」
先生
「そのときはreplace()というメソッドを使えば、簡単に置き換えられますよ!」
生徒
「それって全部の文字を変えるんですか?それとも一部分だけもできますか?」
先生
「両方できます!さらに応用すれば、正規表現という方法を使って、もっと柔軟な置換もできますよ。それじゃあ順番に見ていきましょう!」
1. replace()とは?
replace()は、文字列の中の特定の文字や単語を、別の文字や単語に置き換えるためのメソッドです。文の中にある言葉を、違う言葉に変えるときによく使います。
s = "Pythonは楽しい"
new_s = s.replace("楽しい", "簡単")
print(new_s)
Pythonは簡単
2. 複数の同じ単語も一括で置換できる
replace()を使うと、同じ言葉が複数回出てきても全部まとめて置き換えることができます。
s = "りんごとりんごジュースとりんごパイ"
print(s.replace("りんご", "バナナ"))
バナナとバナナジュースとバナナパイ
3. 部分的にだけ置換したいとき
replace()には、置換回数を指定することもできます。
s = "apple apple apple"
print(s.replace("apple", "orange", 1))
orange apple apple
このように、1回だけ置き換えることもできます。
4. 大文字・小文字の違いに注意
replace()は、完全に一致する文字列しか置き換えません。大文字・小文字が違うと無視されます。
s = "Apple is tasty"
print(s.replace("apple", "banana"))
Apple is tasty
この場合、「Apple」と「apple」は別の文字列として扱われます。
5. 応用:正規表現で柔軟な置換
正規表現(せいきひょうげん)とは、複雑な文字のパターンを指定して検索・置換できる方法です。Pythonではreというモジュールを使います。
import re
s = "abc123def456ghi"
new_s = re.sub(r"\d+", "#", s)
print(new_s)
abc#def#ghi
\d+は「1文字以上の数字」という意味で、re.sub()で置換できます。
6. よく使う正規表現の例
\d:数字\w:英数字\s:空白.+:1文字以上の任意の文字
例えば、メールアドレスの形式にマッチさせることもできます(高度な応用)。
7. 置換前に文字列の中身を確認しよう
inを使って、特定の文字が含まれているかを事前に確認すると安心です。
s = "メール:example@example.com"
if "example.com" in s:
s = s.replace("example.com", "sample.com")
print(s)
メール:example@sample.com
まとめ
Pythonの文字列操作は、初心者でも直感的に使えるメソッドが豊富で、その中でも特に利用頻度が高いのがreplace()です。文字列の一部を別の内容に置き換える基本的な機能から、同じ単語が複数存在する場合の一括置換、さらには置換回数の指定まで、さまざまな場面に応じて柔軟に活用できます。また、大文字と小文字が区別される点は意外と見落とされやすく、実務でも注意が必要なポイントです。文字列が期待どおりに変わらないときは、大文字小文字の違いが原因であることも多く、事前に対象が一致しているかどうかを確認する習慣が役立ちます。
さらに、文字列置換の応用として正規表現を使ったre.sub()が挙げられます。正規表現は複雑な記述を検索・置換できる強力な手段であり、数字の連続や特定の形式を検出して置換するなど、高度なテキスト処理が可能になります。\d+のようなパターン指定を利用することで、数字のまとまりを一括置換するなど、通常のreplace()では難しい処理も簡単に実現できます。また、メールやURLのようなフォーマット検出にも応用できるため、Pythonで文字列処理を行う際には習得しておきたい重要なスキルのひとつです。
置換を行う前に、対象の文字列をinで確認する方法も、誤った置換を防ぐうえで有効です。特に実務では、ログデータや外部入力の内容を扱う機会が多く、意図しない部分が置換されてしまうと重大な問題につながる可能性があります。そのため、置換前のチェックと部分置換の活用は、安全性と操作性の両面で欠かせない知識となります。ここでは、文字列操作の流れをより深く理解できるように、基本的な置換から正規表現を使った応用例までを整理し、Pythonのテキスト処理がどれほど柔軟かを実感できる構成にまとめました。
置換と正規表現を組み合わせたサンプルコード
import re
text = "ID: 12345 / TEL: 090-1234-5678 / CODE: 999"
# 数字のまとまりを「#」に置換
masked = re.sub(r"\d+", "#", text)
# 特定の部分だけ事前確認して置換
if "TEL" in text:
text = text.replace("TEL", "電話番号")
print("正規表現で置換:", masked)
print("確認して置換:", text)
このサンプルでは、正規表現によって数字の連続をすべて置き換える処理と、inによる事前確認を組み合わせた置換を行っています。正規表現を用いることで、どのような数字でも柔軟に置換できるため、ログ情報や個人情報保護のためのマスキング処理にも応用可能です。また、部分的な単語置換を行う前にキーワードが含まれているかどうかをチェックすることで、想定外の箇所が変化してしまうリスクを避けることができます。このように、replace()の基本操作とre.sub()の応用を組み合わせることで、より高度な文字列処理が実現でき、Pythonでのデータ加工の幅が大きく広がります。
文字列操作はプログラムのあらゆる場面で登場するため、今回学んだ置換方法や正規表現の基本を押さえておくことは、今後のスキルアップに直結します。特にPythonでは、シンプルな記述で複雑な処理を表現できるため、慣れてくるとより効率的なコードを書けるようになります。実際のプロジェクトでも、ログ整形・データ変換・入力チェックなどさまざまな場面で活躍する知識なので、ぜひ積極的に応用してみましょう。
生徒
「文字列の置換ってこんなに便利なんですね!特に正規表現を使うと、数字だけまとめて置換できるのがすごいと思いました。」
先生
「そうですね。replace()はシンプルですが、正規表現と組み合わせることで一段階上の文字列操作ができるようになりますよ。」
生徒
「大文字と小文字が区別されることも忘れずに気をつけようと思いました。置換前にinで中身を確認するのも大事ですね。」
先生
「その意識はとても大切です。実際の開発では、誤った置換は大きな問題につながるので、確認しながら丁寧に扱いましょう。」
生徒
「今日の内容を踏まえて、自分のプログラムでも置換をもっと活用してみます!」