Python 3:在字符串中获取倒数第二个索引

JOH*_*ÅTT 9 python python-3.x

我有一个字符串abcdabababcebc如何获得倒数第二次出现的索引b?我搜索并找到rfind(),但这不起作用,因为它是最后一个索引,而不是倒数第二个.

我正在使用Python 3.

MAK*_*MAK 12

这是一种方法:

>>> def find_second_last(text, pattern):
...   return text.rfind(pattern, 0, text.rfind(pattern))
... 
>>> find_second_last("abracadabra", "a")
7
Run Code Online (Sandbox Code Playgroud)

这使用可选的开始和结束参数来查找找到第一个匹配项后的第二个匹配项.

注意:这不会进行任何形式的健全性检查,如果文本中至少出现2次模式,则会发生爆炸.


ins*_*get 7

枚举所有索引并选择所需的索引

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
Run Code Online (Sandbox Code Playgroud)


tom*_*tom 6

>>> s = "abcdabababcebc"
>>> s[:s.rfind("b")].rfind("b")
9 
Run Code Online (Sandbox Code Playgroud)