Python: 文字列を検索する in演算子、find()、rfind()

Pythonで文字列を検索する場合、 in演算子やfind()メソッド・rfind()メソッドを使う方法があります。

文字列の中に検索文字列が存在するかどうかをTrue / Falseで知りたい場合は in演算子を使い、 検索文字列が見つかった位置(インデックス)を知りたい場合は find()又は rfind()メソッドを使います。

ここではin演算子、find()、rfind()の順番で解説します。

in演算子

in演算子は文字列中に検索文字列が含まれているかどうかを True・Falseで知りたい場合に使います。 書式は次の通りです。

書式
検索文字列 in 文字列

検索する文字列が含まれている場合は True、 含まれていない場合は Falseを戻します。

s = "abcdeabcde"

print("abc" in s) # True

print("xyz" in s) # False

in演算子の代わりに、「not in演算子」を使うこともできます。
その場合は、戻り値が逆になります。

s = "abcdeabcde"

print("abc" not in s) # False

print("xyz" not in s) # True

in演算子を使っての検索は、通常 if文の条件式で使われます。 if文の条件式で使う場合は次のように記述します。

s = "abcdeabcde"

if ("abc" in s) :
	# True時の処理
	print(True)
	
else :
	# False時の処理
	print(False)

find() で検索

文字列中に検索文字列が見つかった位置(インデックス)を知りたい場合は find()メソッドを使います。

書式
文字列.find(検索文字列[, 開始[, 終了]])

戻り値は最初に見つかった文字列の位置(インデックス)です。 文字列の先頭インデックスは「0」です。 見つからなかった場合は「-1」を返します。
第2引数と第3引数で検索開始インデックスと、検索終了インデックスを指定することも可能です。

s = "abcdeabcde"

print(s.find("cd"))  # 2

print(s.find("xyx")) # -1

# 開始インデックスを指定
print(s.find("cd", 4)) # 7

# 終了インデックスを指定
print(s.find("cd", 4, 8)) # -1

検索文字と一致する箇所が複数ある場合、 最初に見つかった位置を返します。

rfind()で最後から検索

find()メソッドは文字列を先頭から検索しますが、 最後から検索したい場合は rfind()メソッドを使うと便利です。

s = "abcdeabcde"

print(s.rfind("cd")) # 7

上記の場合、検索文字列がヒットするのはインデックスが「7」と 「2」の部分です。 最初に一致したインデックスを返すため「7」が戻り値となります。

Python