我想找到给定输入字符串中某个子字符串最后一次出现的位置(或索引) str
。
例如,假设输入字符串是 str = 'hello'
并且子字符串是 target = 'l'
,那么它应该输出 3。
我怎样才能做到这一点?
原文由 Parth Soni 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想找到给定输入字符串中某个子字符串最后一次出现的位置(或索引) str
。
例如,假设输入字符串是 str = 'hello'
并且子字符串是 target = 'l'
,那么它应该输出 3。
我怎样才能做到这一点?
原文由 Parth Soni 发布,翻译遵循 CC BY-SA 4.0 许可协议
>>> 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 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答936 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
使用
.rfind()
:也不要使用
str
作为变量名,否则你会隐藏内置的str()
。