我有一个字符串abcdabababcebc
如何获取倒数第二个出现的索引b
?我搜索并找到了 rfind() 但这不起作用,因为它是最后一个索引,而不是倒数第二个。
我正在使用 Python 3。
我有一个字符串abcdabababcebc
如何获取倒数第二个出现的索引b
?我搜索并找到了 rfind() 但这不起作用,因为它是最后一个索引,而不是倒数第二个。
我正在使用 Python 3。
这是一种方法:
>>> def find_second_last(text, pattern):
... return text.rfind(pattern, 0, text.rfind(pattern))
...
>>> find_second_last("abracadabra", "a")
7
这使用可选的 start 和 end 参数在找到第一个匹配项后查找第二个匹配项。
注意:这不会进行任何类型的完整性检查,如果文本中没有至少 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