Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
生徒
「Pythonで文章の中の特定の文字を別の文字に変えることってできますか?」
先生
「はい、それにはreplace()というメソッドを使います。文字列を置き換えるときにとても便利ですよ。」
生徒
「メソッドってなんですか?関数とは違うんですか?」
先生
「メソッドは関数の一種ですが、特定のデータ型とセットで使う関数だと思ってください。replace()は文字列専用の関数のようなものです。」
1. Pythonのreplace()とは?文字列の一部を別の文字に置き換える方法
replace()メソッドは、文章の中の特定の言葉を別の言葉に差し替えたいときに使う、文字列操作の中でも特にわかりやすい便利な機能です。難しい準備は必要なく、「何を」「何に」変えたいかを指定するだけで簡単に置き換えることができます。
まずはイメージしやすい短い例から見てみましょう。たとえば「こんにちは」という文字列の一部を別の言葉に変えると、次のように新しい文章が作れます。
text = "こんにちは"
new_text = text.replace("にち", "ばん")
print(new_text)
こんばんは
このように、指定した部分だけがきれいに置き換わります。文字列の加工や文章の修正をしたいときに、まず覚えておくと役立つ基本的なメソッドです。
2. replace()の基本的な使い方
文字列の置換を行うには、次のようにreplace()を使います。
text = "私はPythonが好きです"
new_text = text.replace("Python", "プログラミング")
print(new_text)
私はプログラミングが好きです
このように、置き換えたい元の文字列と、変えたい文字列を順番に指定します。
3. replace()は全部置き換える
replace()は、対象の文字列が何回出てきても、すべてまとめて置き換えてくれます。
text = "ねこがねこを追いかけた"
print(text.replace("ねこ", "いぬ"))
いぬがいぬを追いかけた
このように、「ねこ」が2つ出てきた場合、両方とも「いぬ」に変わります。
4. 一部だけ置き換えるには?replace()の回数指定
すべてではなく、最初の1回だけ置き換えたいときは、replace()の3つ目の引数に「回数」を指定します。
text = "ねこがねこを追いかけた"
print(text.replace("ねこ", "いぬ", 1))
いぬがねこを追いかけた
このように、最初の「ねこ」だけが「いぬ」に変わり、2つ目はそのまま残ります。
5. 大文字・小文字の区別に注意しよう
replace()は、文字の大小(アルファベット)を区別して置き換えます。「Python」と「python」は別物として扱われます。
text = "I like Python and python"
print(text.replace("Python", "プログラミング"))
I like プログラミング and python
このように、「Python」は置き換えられますが、「python」はそのまま残ります。
6. 応用編:複数の文字を一括で置き換える方法
replace()では1つの言葉しか置き換えられませんが、複数の言葉を一括で変えたいときは、replace()を何回か使えば実現できます。
text = "りんごとバナナとみかん"
text = text.replace("りんご", "apple").replace("バナナ", "banana").replace("みかん", "orange")
print(text)
appleとbananaとorange
このように、連続してreplace()を使うことで複数の置換ができます。
7. 正規表現を使った高度な置換
「正規表現(せいきひょうげん)」とは、文字のパターンを使って文字列を探す方法です。たとえば、「数字だけをすべて置き換える」などの高度な操作ができます。
Pythonではreというモジュールを使って、正規表現を扱います。
import re
text = "電話番号は090-1234-5678です"
new_text = re.sub(r"\d", "*", text)
print(new_text)
電話番号は***-****-****です
\dは「数字1文字」を意味する記号で、正規表現なら一括で数字だけを置き換えることができます。
8. 正規表現で特定のパターンを置き換える例
たとえば、「メールアドレスの@以降を伏せる」ような操作も正規表現なら可能です。
import re
text = "メールはexample@example.comです"
new_text = re.sub(r"@.*", "@***", text)
print(new_text)
メールはexample@***です
@.*という部分は、「@から後ろ全部」という意味で、セキュリティ対策にも使われます。
9. replace()と正規表現、どちらを使うべき?
単純な文字の置き換えにはreplace()が便利で読みやすいです。一方で、もっと複雑なパターンに合わせた置き換えには正規表現のre.sub()を使うと良いです。
まずはreplace()で慣れてから、必要になったときに正規表現を少しずつ覚えていくのがおすすめです。
10. 練習:replace()で文章の中の言葉を変えてみよう
次のような文字列があったとします。
text = "今日は晴れです。晴れの日は気持ちがいいですね。"
この中の「晴れ」をすべて「くもり」に変えてみましょう。
print(text.replace("晴れ", "くもり"))
今日はくもりです。くもりの日は気持ちがいいですね。
このように、文章の中の特定の言葉を簡単に別の言葉に差し替えることができます。
まとめ
Pythonで文字列を置き換える方法について学ぶと、さまざまな場面で文章を編集・加工する力が身につきます。たとえば、入力されたテキストから特定の単語だけを変更したいときや、情報の一部を伏せる処理、複数の単語を一括で置換するような機能は、Web開発やデータ処理の現場でもよく使われます。
この記事では、基本となるreplace()メソッドの使い方から、複数回の置き換えや回数指定、大文字・小文字の違いまで丁寧に確認しました。replace()はとても直感的で使いやすいため、初心者にとっても習得しやすいメソッドです。
また、より複雑な置換が必要なときには正規表現re.sub()を使う方法も紹介しました。たとえば、メールアドレスのドメインだけを隠したり、数字だけをマスクしたり、記号やパターンに沿った操作をしたいときには非常に役立ちます。
次のコードはその復習として、「文章中の単語をいくつかまとめて別の単語に変える処理」と「メールアドレスの一部を伏せる処理」を組み合わせた例です。
text = "私の好きなフルーツはりんごとバナナです。連絡先はfruitlover@example.comです"
text = text.replace("りんご", "apple").replace("バナナ", "banana")
import re
text = re.sub(r"@.*", "@***", text)
print(text)
このようにreplace()とre.sub()を組み合わせると、自然なテキスト編集が可能になります。
生徒「先生、replace()ってすごく簡単に文字を置き換えられるんですね!」
先生「そうだね、使い方がシンプルだから、まずはreplace()で慣れるといいよ」
生徒「正規表現はちょっと難しそうだけど、少しずつ使い方を覚えたいです」
先生「うん、複雑なパターンの置き換えにはre.sub()が便利だから、少しずつで大丈夫」
生徒「あと、replace()の3つ目の引数で回数を指定できるのも面白かったです!」
先生「そうそう、全部変えるんじゃなくて、一部だけ変えたいときに使える便利な機能だね」
生徒「次はもっと長い文章や実際のデータでも試してみたいです」
先生「それがいいね。どんどん練習して、文字列の処理に慣れていこう!」