Python 文字列の置換と検索

ここでは Python 文字列の置換と検索をする方法についてご説明します。

Python 文字列を置換する

Python で文字列の中の文字を置換するには、replace() メソッドを使います。

replace() メソッドの構文は次の通りです。

replace("置換元の文字列", "置換後の文字列" [, 何個置換するか])

文字列の中の "置換元の文字列" を "置換後の文字列" に置換します。

[何個置換するか] は省略可能で、指定した時は全てではなく、前から指定した個数の文字列のみ置換します。


それでは、replace() メソッドを使って、文字列を置換してみましょう。

s = "What's your favorite color?"

print(s.replace("color", "food"))
print(s.replace("r", "R"))
print(s.replace("r", "R", 2))

実行結果は次のようになります。 それぞれ元の文字列の、置換元に指定した文字列が、置換後の文字列に置換されていますね。

What's your favorite food?
What's youR favoRite coloR?
What's youR favoRite color?

replace() メソッドを使って、空白に置換することで、指定した文字を削除したりするのにも使えますね!


Python 文字列を検索する

文字列の中に指定した文字列含まれているかどうかを検索したいだけの時は in を使います。

s = "What's your favorite color?"

print("a" in s)
print("b" in s)

実行結果は次のようになります。それぞれ、文字列に指定した文字が存在している時には True が、存在していない時には False が出力されていますね。

True
False

Python 文字列の出現位置を検索する

Python で文字列の出現位置を検索するには、find()、rfind()、index()、rindex() メソッドが使えます。

使い方はどのメソッドも同じで、次の通りです。

メソッド名("検索したい文字列", [検索開始位置, [検索終了位置]])

[検索開始位置]と[検索終了位置]は省略可能で、省略した場合はそれぞれ 0 と「最後まで」になります。


find() と index() は文字列を「前から後ろ」に検索し、見つけた文字列の最初の文字のインデックスを返します。

rfind() と rindex() は文字列を「後ろから前」に検索し、見つけた文字列の最初の文字のインデックスを返します。

find()、rfind() と index()、rindex() の違いは、find のほうは見つからなかった時に -1 を返すのに対して、index のほうは ValueError になります。

意図的にエラーにしたい時以外は、find を使うほうが良いかもしれませんね。


また、同じ構文で count() メソッドもあり、こちらは指定した文字列が出現した回数を返してくれます。

では、これらのメソッドを使ってみましょう。

s = "favorite color"

print("count o:", s.count("o"))
print("----------------------")
print("find o:", s.find("o"))
print("find o (start 5):", s.find("o", 5))
print("rfind o:", s.rfind("o"))
print("find x:", s.find("x"))
print("----------------------")
print("index o:", s.index("o"))
print("index o (start 5):", s.index("o", 5))
print("rindex o:", s.rindex("o"))
print("index x:", s.index("x"))

実行結果は次のようになります。 find と index は基本的に同じですが、存在しない文字列を検索した時に index のほうはエラーになっていますね。


以上、Python 文字列の置換と検索をする方法についてご説明しました。

© 2024 やさしい Python 入門