Pythonのfind関数を解説

Python

本記事ではPythonの組み込み関数であるfind()を解説します。

find()

find()は指定した文字列(部分文字列)が元の文字列のどこに最初に現れるかを検索し、その開始位置のインデックスを返す関数です。

もし見つからなかった場合は -1 を返します。

基本的な使い方

s = "Hello, world!"
index = s.find("world")
print(index)  # 7 ("world" は 7 番目のインデックスから始まる)

not_found_index = s.find("python")
print(not_found_index) # -1 ("python"は見つからないため)

引数

find() は次のよう引数を指定します。

str.find(sub[, start[, end]])
引数説明
sub検索する文字列
start検索を開始する位置(省略可能)
end検索を終了する位置(省略可能)

start を指定する

文字列の 途中から検索を開始したい場合start を指定できます。

s = "Hello, world! Hello again!"
index = s.find("Hello", 8)  # 8文字目以降で検索
print(index)  # 14 ("Hello again!" の "Hello" が14文字目から始まる)

end を指定する

検索範囲を 限定したい場合 は、start に加えて end も指定できます。

s = "Hello, world! Hello again!"
index = s.find("Hello", 0, 12)  # 0文字目から12文字目までの範囲で検索
print(index)  # 0 (最初の "Hello" が見つかる)

12文字目までの範囲には "Hello again!""Hello" が含まれていないため、最初の "Hello" のインデックス 0 が返されます。

rfind() との違い

rfind() を使うと、最後に現れた位置 を検索できます。

s = "Hello, world! Hello again!"
print(s.find("Hello"))   # 0  (最初の "Hello" の位置)
print(s.rfind("Hello"))  # 14 (最後の "Hello" の位置)

index() との違い

Pythonには find() に似た index() メソッドもありますが、index() は見つからない場合に ValueError を発生させる という違いがあります。

s = "Hello, world!"

print(s.find("Python"))  # -1 (見つからない場合)
print(s.index("Python"))  # エラー発生(ValueError: substring not found)

find()-1 を返すので、例外処理なしで検索を実行できる のが利点です

また、rfind()rindex()find()index()と同様の関係になっています。

s = "Hello, world!"

print(s.rfind("Python"))  # -1 (見つからない場合)
print(s.rindex("Python"))  # エラー発生(ValueError: substring not found)

まとめ

find()は文字列の検索においてエラーを発生させず、シンプルに使える便利な関数です。

特に-1を返す特性を活かせば、部分文字列のチェックや条件分岐に役立ちます。

タイトルとURLをコピーしました