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

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

我该怎么做呢?


当前回答

Python String rindex()方法

描述 Python字符串方法rindex()返回子字符串str所在的最后一个索引,如果不存在这样的索引则引发异常,可选地将搜索限制为字符串[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()方法 ——Tutorialspoint

其他回答

# 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)

使用.rfind ():

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

另外,不要使用str作为变量名,否则会影响内置的str()。

对于这种情况,rfind()和rindex()字符串方法都可以使用,它们都将返回子字符串所在字符串的最高索引,如下所示。

test_string = 'hello'
target = 'l'
print(test_string.rfind(target))
print(test_string.rindex(target))

但是在使用rindex()方法时应该记住一件事,如果在搜索的字符串中没有找到目标值,rindex()方法会引发ValueError [substring not found],另一方面rfind()只会返回-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

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