13

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

我正在使用 Python 3。

4

3 回答 3

17

这是一种方法:

>>> def find_second_last(text, pattern):
...   return text.rfind(pattern, 0, text.rfind(pattern))
... 
>>> find_second_last("abracadabra", "a")
7

这使用可选的 start 和 end 参数在找到第一个匹配项后查找第二个匹配项。

注意:这不会进行任何类型的完整性检查,如果文本中没有至少 2 次出现模式,则会爆炸。

于 2012-12-28T00:49:56.140 回答
10
>>> s = "abcdabababcebc"
>>> s[:s.rfind("b")].rfind("b")
9 
于 2012-12-28T00:47:53.033 回答
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
于 2012-12-28T00:49:02.847 回答