我想在给定的输入字符串str中找到某个子字符串的最后一次出现的位置(或索引)。
例如,假设输入字符串是str = 'hello',子字符串是target = 'l',那么它应该输出3。
我该怎么做呢?
我想在给定的输入字符串str中找到某个子字符串的最后一次出现的位置(或索引)。
例如,假设输入字符串是str = 'hello',子字符串是target = 'l',那么它应该输出3。
我该怎么做呢?
当前回答
str = "Hello, World"
target='l'
print(str.rfind(target) +1)
or
str = "Hello, World"
flag =0
target='l'
for i,j in enumerate(str[::-1]):
if target == j:
flag = 1
break;
if flag == 1:
print(len(str)-i)
其他回答
试试这个:
s = 'hello plombier pantin'
print (s.find('p'))
6
print (s.index('p'))
6
print (s.rindex('p'))
15
print (s.rfind('p'))
str = "Hello, World"
target='l'
print(str.rfind(target) +1)
or
str = "Hello, World"
flag =0
target='l'
for i,j in enumerate(str[::-1]):
if target == j:
flag = 1
break;
if flag == 1:
print(len(str)-i)
您可以使用rfind()或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
区别在于当子字符串未找到时,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
如果你不想使用rfind,那么这个可以使用/
def find_last(s, t):
last_pos = -1
while True:
pos = s.find(t, last_pos + 1)
if pos == -1:
return last_pos
else:
last_pos = pos
不试图复活一个不活跃的帖子,但由于这还没有发布…
(这是我在发现这个问题之前是怎么做的)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
解释:在搜索最后一个出现项时,实际上是在搜索反转字符串中的第一个出现项。知道了这一点,我做了s[::-1](它返回一个反向的字符串),然后从那里索引目标。然后我做了len(s) - 1 -找到的索引,因为我们想要在未反转的(即原始的)字符串中找到索引。
不过要小心!如果target不止一个字符,则可能在反向字符串中找不到它。为了解决这个问题,使用last_pos = len(s) -1 - s[::-1].index(target[::-1]),它会搜索target的反向版本。