查找字符串中子字符串最后一次出现的索引

新手上路,请多包涵

我想找到给定输入字符串中某个子字符串最后一次出现的位置(或索引) str

例如,假设输入字符串是 str = 'hello' 并且子字符串是 target = 'l' ,那么它应该输出 3。

我怎样才能做到这一点?

原文由 Parth Soni 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 344
2 个回答

使用 .rfind()

 >>> s = 'hello'
>>> s.rfind('l')
3

也不要使用 str 作为变量名,否则你会隐藏内置的 str()

原文由 Rik Poggi 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 rfind()rindex()

Python2 链接: rfind() rindex()

 >>> s = 'Hello StackOverflow Hi everybody'

>>> print( s.rfind('H') )
20

>>> print( s.rindex('H') )
20

>>> print( s.rfind('other') )
-1

>>> print( s.rindex('other') )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

The difference is when the substring is not found, rfind() returns -1 while rindex() raises an exception ValueError (Python2 link: ValueError )。

如果您不想检查 rfind() 返回代码 -1 ,您可能更喜欢 rindex() ,它将提供可理解的错误消息。否则,您可能会搜索意外值 -1 来自您的代码的分钟…


示例:搜索最后一个换行符

>>> txt = '''first line
... second line
... third line'''

>>> txt.rfind('\n')
22

>>> txt.rindex('\n')
22

原文由 oHo 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题