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」が戻り値となります。