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

时间:2012-03-05 19:13:33

标签: python string

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

例如,假设输入的字符串为str = 'hello'且子字符串为target = 'l',则输出为3. {/ p>

我该怎么做?

10 个答案:

答案 0 :(得分:451)

使用.rfind()

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

另外,请勿使用str作为变量名称,否则您将隐藏内置str()

答案 1 :(得分:63)

您可以使用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

区别在于找不到子字符串时,rfind()返回-1rindex()引发异常ValueError(Python2链接:ValueError)。< / p>

如果您不想查看rfind()返回代码-1,您可能更愿意使用rindex()来提供可理解的错误消息。否则,您可以在代码中搜索意外值-1的分钟...


示例:搜索上一个换行符

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

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

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

答案 2 :(得分:35)

使用str.rindex方法。

>>> 'hello'.rindex('l')
3
>>> 'hello'.index('l')
2

答案 3 :(得分:3)

试试这个:

s = 'hello plombier pantin'
print (s.find('p'))
6
print (s.index('p'))
6
print (s.rindex('p'))
15
print (s.rfind('p'))

答案 4 :(得分:3)

more_itertools库提供了查找所有字符或所有子字符串索引的工具。

<强>鉴于

%

<强>代码

字符

现在有rlocate工具可用:

import more_itertools as mit


s = "hello"
pred = lambda x: x == "l"

补充工具是locate

next(mit.rlocate(s, pred))
# 3

子串

还有一个list(mit.locate(s, pred))[-1] # 3 mit.last(mit.locate(s, pred)) # 3 参数可用于查找多个项目的主要项目:

window_size

答案 5 :(得分:1)

如果您不想使用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

答案 6 :(得分:1)

没有尝试恢复不活跃的帖子,但由于尚未发布...

(这是我在找到这个问题之前的做法)

s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)

说明:当您搜索最后一次出现时,实际上您正在搜索反向字符串中的第一个匹配项。知道了这一点,我做了s[::-1](返回一个反向字符串),然后从那里索引target。然后我做了len(s) - 1 - the index found因为我们想要未反转的(即原始)字符串中的索引。

但请注意!如果target不止一个字符,您可能无法在反向字符串中找到它。要解决此问题,请使用last_pos = len(s) - 1 - s[::-1].index(target[::-1]),它会搜索target的反转版本。

答案 7 :(得分:1)

Python字符串rindex()方法

说明
Python字符串方法rindex()返回找到子字符串str的最后一个索引,如果不存在这样的索引,则会引发异常,可以选择将搜索范围限制为string [beg:end]。

语法
以下是rindex()方法的语法-

str.rindex(str, beg=0 end=len(string))

参数
str-这指定要搜索的字符串。

beg-这是起始索引,默认情况下为0

len-这是结束索引,默认情况下它等于字符串的长度。

返回值
如果找到该方法,则返回最后一个索引;否则,如果没有找到str,则引发异常。

示例
以下示例显示了rindex()方法的用法。

现场演示

!/ usr / bin / python

str1 = "this is string example....wow!!!";
str2 = "is";

print str1.rindex(str2)
print str1.index(str2)

当我们运行上面的程序时,它会产生以下结果-

5
2

参考:Python String rindex() Method - Tutorialspoint

答案 8 :(得分:0)

您可以使用rindex()函数来获取字符串中最后一次出现的字符

s="hellloooloo"
b='l'
print(s.rindex(b))

答案 9 :(得分:0)

# Last Occurrence of a Character in a String without using inbuilt functions
str = input("Enter a string : ")
char = input("Enter a character to serach in string : ")
flag = 0
count = 0
for i in range(len(str)):
    if str[i] == char:
        flag = i
if flag == 0:
    print("Entered character ",char," is not present in string")
else:
    print("Character ",char," last occurred at index : ",flag)