Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
生徒
「Pythonで文章の中の特定の文字を別の文字に変えることってできますか?」
先生
「はい、それにはreplace()
というメソッドを使います。文字列を置き換えるときにとても便利ですよ。」
生徒
「メソッドってなんですか?関数とは違うんですか?」
先生
「メソッドは関数の一種ですが、特定のデータ型とセットで使う関数だと思ってください。replace()
は文字列専用の関数のようなものです。」
1. Pythonのreplace()とは?文字列の一部を別の文字に置き換える方法
Pythonのreplace()
メソッドは、文字列の中のある文字や言葉を、別の文字や言葉に置き換えるために使います。たとえば、「こんにちは」という文章の中の「にち」を「ばん」に変えると「こんばんは」になります。
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("晴れ", "くもり"))
今日はくもりです。くもりの日は気持ちがいいですね。
このように、文章の中の特定の言葉を簡単に別の言葉に差し替えることができます。