我想找到给定输入字符串中某个子字符串最后一次出现的位置(或索引)str.
例如,假设输入的字符串是str = 'hello'和子字符串是target = 'l',那么它应该输出3.
我怎样才能做到这一点?
Rik*_*ggi 531
用途.rfind():
>>> s = 'hello'
>>> s.rfind('l')
3
Run Code Online (Sandbox Code Playgroud)
也不要使用str变量名称,否则你会影响内置的str().
oli*_*bre 68
您可以使用rfind()或Python2链接:rindex()
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
Run Code Online (Sandbox Code Playgroud)
区别在于未找到子字符串时rfind()返回,-1同时rindex()引发异常ValueError(Python2链接:) ValueError.
如果您不想检查rfind()返回代码-1,您可能更愿意rindex()提供可理解的错误消息.否则,您可以-1在代码中搜索意外值的分钟...
>>> txt = '''first line
... second line
... third line'''
>>> txt.rfind('\n')
22
>>> txt.rindex('\n')
22
Run Code Online (Sandbox Code Playgroud)
rmm*_*mmh 36
使用该str.rindex方法.
>>> 'hello'.rindex('l')
3
>>> 'hello'.index('l')
2
Run Code Online (Sandbox Code Playgroud)
小智 6
尝试这个:
s = 'hello plombier pantin'
print (s.find('p'))
6
print (s.index('p'))
6
print (s.rindex('p'))
15
print (s.rfind('p'))
Run Code Online (Sandbox Code Playgroud)
不是想复活一个不活跃的帖子,但是因为这个帖子还没有发布......
(在找到这个问题之前,我就是这样做的)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
Run Code Online (Sandbox Code Playgroud)
说明:当您搜索最后一次出现时,实际上是在搜索反向字符串中的第一次出现。知道这一点,我做了s[::-1](它返回一个反向字符串),然后target从那里索引。然后我做了,len(s) - 1 - the index found因为我们想要未反转(即原始)字符串中的索引。
不过要小心!如果target是多个字符,您可能不会在反转字符串中找到它。要解决此问题,请使用last_pos = len(s) - 1 - s[::-1].index(target[::-1]),它会搜索target.
| 归档时间: |
|
| 查看次数: |
293746 次 |
| 最近记录: |