文字列があります。abcdabababcebc
最後から2番目に出現するインデックスを取得するにはどうすればよいb
ですか。rfind()を検索して見つけましたが、これは最後から2番目のインデックスではなく、最後のインデックスであるため、機能しません。
私はPython3を使用しています。
文字列があります。abcdabababcebc
最後から2番目に出現するインデックスを取得するにはどうすればよいb
ですか。rfind()を検索して見つけましたが、これは最後から2番目のインデックスではなく、最後のインデックスであるため、機能しません。
私はPython3を使用しています。
これを行う1つの方法は次のとおりです。
>>> def find_second_last(text, pattern):
... return text.rfind(pattern, 0, text.rfind(pattern))
...
>>> find_second_last("abracadabra", "a")
7
これは、オプションの開始パラメーターと終了パラメーターを使用して、最初のオカレンスが見つかった後、2番目のオカレンスを探します。
注:これは、いかなる種類の健全性チェックも行わず、テキストにパターンが2回以上出現しない場合は爆発します。
>>> s = "abcdabababcebc"
>>> s[:s.rfind("b")].rfind("b")
9
すべてのインデックスを列挙し、必要なものを選択します
In [19]: mystr = "abcdabababcebc"
In [20]: inds = [i for i,c in enumerate(mystr) if c=='b']
In [21]: inds
Out[21]: [1, 5, 7, 9, 12]
In [22]: inds[-2]
Out[22]: 9