Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】文字列内の部分文字列が最後に出現するインデックスを取得する方法

Pythonでは、rfind()メソッドを使うことで、文字列の中に部分文字列が最後に出現する位置(インデックス)を簡単に調べることができます。

rfind()メソッドの基本

rfind()は、文字列の末尾から前方に向かって部分文字列を検索するメソッドです。動作は以下の通りです。

  • 部分文字列が見つかった場合 → 最後に出現した位置のインデックスを返す
  • 見つからなかった場合 → -1 を返す

使用例

>>> 'some of the some'.rfind('some')
12
>>> 'some of the some'.rfind('none')
-1
>>> "NikolaTesla".rfind('kola')
2

1つ目の例では、'some' という部分文字列が2回出現していますが、末尾側の出現位置である 12 が返されています。2つ目の例のように、存在しない部分文字列を指定すると -1 が返ります。

find()メソッドとの違い

find() は文字列の先頭から検索して最初に出現する位置を返すのに対し、rfind()末尾から検索して最後に出現する位置を返します。どちらのメソッドも、見つからない場合は -1 を返す点で共通しています。

>>> s = 'some of the some'
>>> s.find('some')   # 先頭から検索
0
>>> s.rfind('some')  # 末尾から検索
12

検索範囲を限定する

rfind() には、検索範囲を指定するオプション引数もあります。第2引数に開始位置、第3引数に終了位置を渡すことで、その範囲内だけを対象に検索できます。

>>> 'abcabcabc'.rfind('abc', 0, 6)
3

補足:rindex()メソッド

似たメソッドとして rindex() もあります。rfind() と同じく最後の出現位置を返しますが、部分文字列が見つからなかった場合に -1 を返す代わりに ValueError 例外を発生させる点が異なります。見つからないケースをエラーとして扱いたい場合は rindex() の利用を検討してください。

  1. Pythonで文字列を後ろから検索するには?rfind()メソッドの使い方を解説

    Pythonで文字列を末尾(右側)から検索したい場合は、rfind() メソッドを使用します。rfind() は文字列の終わりに向かって部分文字列を探し、見つかった場合は最後に出現した位置のインデックスを返します。見つからなかった場合は -1 を返します。 >>> CocacolaPepsi.rfind(cola) 4 >>> CocacolaPepsi.rfind(coke) -1 上記の例では、CocacolaPepsi の中に cola が含まれているため、その最後の出現位置であるインデックス 4 が返されています。一方、存在しない coke を検索し

  2. Pythonで部分文字列が文字列に含まれているか確認する方法(in演算子とfindメソッド)

    Pythonでは、ある文字列が別の文字列の部分文字列(サブストリング)として含まれているかどうかを簡単に確認できます。最も基本的な方法は、in 演算子を使うことです。in 演算子を使った判定方法in 演算子は、左辺の文字列が右辺の文字列に含まれている場合に True を、含まれていない場合に False を返します。以下はその使用例です。print(ello in hello world)実行結果:Trueこのように、ello は hello world の中に含まれているため、True が出力されます。find() メソッドで位置(インデックス)を取得する部分文字列が含まれているかどうかに加