Pythonのstr.find(), str.rfind()の使い方
- 作成日: 2021-01-28
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonのstr.find()とstr.rfind()の使い方
プログラミング言語のPython(パイソン)には組み込みのオブジェクトに「文字列」があります。
これはstr
というクラスで表現されます。
str
は文字列を探索するためのメソッドfind()
とrfind()
を持っています。
この記事ではstr
のfind()
とrfind()
の使い方を解説します。
具体的には↓を見ていきます。
- inによる部分文字列の検索
- str.find()の構造
- str.find()の使い方
- str.rfind()の構造
- str.rfind()の使い方
inによる部分文字列の検索
in
はPythonの組み込みキーワードです。
これを使うと文字列に特定の文字列が含まれているか判定することが出来ます。
書式は↓の通りです。
検索したい文字列 in 検索対象の文字列
in
は右の「検索対象の文字列」から左の「検索したい文字列」を検索し、文字列が存在していたらTrue
, 存在していなかったらFalse
を返します。
具体的には↓のように使います。
print('Bird' in 'The Big Bird')
↑のコードの出力結果は↓のようになります。
True
特定の文字列が文字列内に含まれていない場合は↓のようにFalse
になります。
print('Dog' in 'The Big Bird')
↑のコードの出力結果は↓のようになります。
False
str.find()の構造
str.find()
は↓のような構造を持っています。
str.find(sub[, start[, end]])
str.find()
は最大で3つの引数を取り、1つの返り値を返します。
sub(第1引数)
検索する文字列を渡します。
start(第2引数)
検索対象の文字列のスライスのスタート位置を指定します。
end(第3引数)
検索対象の文字列のスライスのエンド位置を指定します。
返り値
str.find()
は第1引数のsub
が文字列に含まれていた場合、その最小のインデックスを返します。
返り値の型はint
で整数です。
sub
が文字列に含まれていなかった場合は-1
を返します。
str.find()の使い方
str.find()
は文字列のメソッドです。
そのため文字列にドット(.
)演算子を繋げてfind()
メソッドを呼び出します。
例えば↓のようにです。
pos = 'The Big Bird'.find('Big')
print(pos)
↑のコードの出力結果は↓のようになります。
4
Big
という部分文字列はThe Big Bird
という文字列の先頭から4番目の文字にヒットします。
ヒットしている部分はThe
の次のBig
に対してです。このBig
のB
の文字は先頭から4番目の位置にあるため、返り値は4
になります。
検索対象の文字列の範囲を絞りたい場合は第2引数start
と第3引数のend
を指定します。
たとえばThe Big Bird
の7
文字目から11
文字目までを検索範囲にしたい場合は↓のようにします。
pos = 'The Big Big Bird'.find('Big', 7, 11)
print(pos)
↑のコードの出力結果は↓のようになります。
8
検索しても見つからなかった場合は↓のようにstr.find()
は-1
を返します。
pos = 'The Big Bird'.find('Dog')
print(pos)
↑のコードの出力結果は↓のようになります。
-1
str.rfind()の構造
str.rfind()
は↓のような構造を持っています。
str.rfind(sub[, start[, end]])
str.rfind()
は3つの引数を取り、1つの返り値を返します。
sub(第1引数)
検索する文字列を渡します。
start(第2引数)
検索対象の文字列のスライスのスタート位置を指定します。
end(第3引数)
検索対象の文字列のスライスのエンド位置を指定します。
返り値
str.rfind()
は文字列の中にsub
が見つかった場合は、その最大のインデックスを返します。
最大のインデックスと言うのは、一番最後に見つかった文字列のインデックスと言うことです。
sub
が見つからなかった場合はstr.rfind()
は-1
を返します。
str.rfind()の使い方
str.rfind()
もまたPythonの文字列のメソッドです。
文字列にドット(.
)演算子を付けてrfind()
を呼び出すことで使うことが出来ます。
たとえばThe Big Bird and The Big Dog
という文字列からBig
という部分文字列を検索したいとします。
その場合は↓のようになります。
pos = 'The Big Bird and The Big Dog'.rfind('Big')
print(pos)
↑のコードの出力結果は↓のようになります。
21
str.find()
と比べて、str.rfind()
は後方のThe Big Dog
のBig
のほうにマッチしているため、↑のようなインデックスが返ってきます。
検索範囲を絞りたい場合は第2引数のstart
と第3引数のend
に整数で範囲を指定します。
pos = 'The Big Bird and The Big Dog'.rfind('Big', 10, 30)
print(pos)
↑のコードの出力結果は↓のようになります。
21
また、検索した文字列が見つからなかった場合は↓のようにstr.rfind()
は-1
を返します。
pos = 'The Big Big Bird'.rfind('Small')
print(pos)
↑のコードの出力結果は↓のようになります。
-1
おわりに
今回はPythonのin
キーワードと、文字列のfind()
とrfind()
の使い方について見て見ました。
文字列の検索には他にre
モジュールを使った正規表現による検索方法も存在します。
気が向いた方は調べてみてください。