Pythonの文字列find()メソッドは、ある文字列が他の文字列の部分文字列であるかどうかを確認するために使用されます。
ある文字列が他の文字列を含んでいるかどうかを調べたいとき、 find() はこの問題を解決するために非常に便利です。
いくつかの簡単な例を通して、このメソッドの使い方を理解しましょう。
Python String Find() のシンタックス
フォーマット
ret = str.find(sub, start, end)
|
ここでは、文字列オブジェクト str に対して find() が実行され、整数が返されます。
これは、部分文字列 sub がオプションのパラメータである start と end の間にあるかどうかをチェックするものです。
注意: start は含まれ、 end は含まれない。
find()` はキーワード引数を取らないので、位置引数のみを記述する必要があります。
もし、位置の間に部分文字列が存在しない場合は、 ret は -1 となります。
それ以外の場合は、入力文字列上で部分文字列が最初にマッチした位置となる。
簡単な例を見てみましょう。
test_string = "Hello from Python"
# We will check if the substring# 'Python' exists in test_stringprint(test_string.find('Python', 0, len(test_string)) )
|
出力 11
部分文字列が存在するので、部分文字列の最初の文字 (‘Python’ の ‘A’) の位置が返され、それは 11 になります。
負のインデックスを使って、文字列の末尾からのオフセットに言及することもできます。
test_string = "Hello from Python"
# Will search from the first to the # second last positionprint(test_string.find('Python', 0, -1))
# Will search from index 5 to len(str) - 1print(test_string.find('from', 5, -1))
|
結果は以下の通りです。
-1
6 |
最初の例では、find()メソッドが文字列 “Python” に完全にマッチしないため、出力が負になっています。
なぜなら、-1のためにfind文字列はAskPythoまでしか検索しないので、検索しているものが実際には見つかっていないことになるからです。
Python String find() を開始/終了引数なしで使用する
文字列全体を検索したい場合は、 start と end の引数を空にしておくことができます。
これは、多くのプログラマがPythonの文字列find()を使用する際に最も広く使われている方法です。
先ほどの例を次のように書き直すことができます。
test_string = "Hello from Python"
print(test_string.find('Python'))
|
これは前と同じ出力になります。
start 引数のみを指定した find() の使用法
引数 end を省略することで、文字列の開始位置から終了位置までを指定することができる。
test_string = "Hello from Python"
# Will print 11print(test_string.find('Python', 0))
# Will print -1, as the search starts# from position 12, i.e from 'k'print(test_string.find('Python', 12))
|
結果は以下の通りです。
11-1
|
まとめ
今回は、部分文字列を検索するための str.find() メソッドについて学びました。
この記事もチェック:Pythonでstripメソッドを使って文字列をトリミングする3つの方法