ユーニックス総合研究所

  • home
  • archives
  • python-str-find-rfind

Pythonのstr.find(), str.rfind()の使い方

  • 作成日: 2021-01-28
  • 更新日: 2023-12-24
  • カテゴリ: Python

Pythonのstr.find()とstr.rfind()の使い方

プログラミング言語のPython(パイソン)には組み込みのオブジェクトに「文字列」があります。
これはstrというクラスで表現されます。
strは文字列を探索するためのメソッドfind()rfind()を持っています。

この記事ではstrfind()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に対してです。このBigBの文字は先頭から4番目の位置にあるため、返り値は4になります。

検索対象の文字列の範囲を絞りたい場合は第2引数startと第3引数のendを指定します。
たとえばThe Big Bird7文字目から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 DogBigのほうにマッチしているため、↑のようなインデックスが返ってきます。

検索範囲を絞りたい場合は第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モジュールを使った正規表現による検索方法も存在します。
気が向いた方は調べてみてください。