0

我需要在给定的字符串中打印最后一次遇到特定字符的位置。我该怎么做?IE。对于这个字符串“alahambra”,我需要找到最后一次出现字母“a”,所以结果应该是:8。

我试过这段代码,但它并不总是有效:

def find_last(search, target):
    first=search.find(search)
    last=len(search)
    result=search.find(target,last-1)
    return result   

例子:

打印 find_last('aaaaa', 'aa')

应该打印 3,它会打印 -1,这是错误的!

打印 find_last('aaaa', 'b')

应该打印-1,它打印-1,这是正确的。

打印 find_last("111111111", "1")

应该打印 8,它打印 8,这是正确的。

打印 find_last("222222222", "")

应该打印 9,而它打印 8,这是错误的!

打印 find_last("", "3")

应该打印-1,它打印-1,这是正确的。

打印 find_last("", "")

应该打印 0,它打印 0,这是正确的。

我的代码有什么问题,我应该如何更改它?谢谢!

4

3 回答 3

6
>>> "alahambra".rindex('a')
8
>>> 

如果未找到子字符串,这将引发错误。在这种情况下,使用rfind将返回 -1。

>>> "alahambra".rfind('a')
8
>>> 
>>> ''.rfind('b')
-1
>>> 
于 2013-07-20T19:04:14.197 回答
1

你可以使用rindexrfind- http://docs.python.org/2/library/string.html

"alahambra".rfind('a')

它们之间的区别在于,rindex当找不到子字符串时会引发错误并rfind返回 -1

于 2013-07-20T19:06:14.813 回答
0

您的代码应如下所示:

>>> def find_last(A,q):
...     k = -1
...     while k < len(A):
...             i = A.find(q,k+1)
...             if i == -1: return k
...             else: k = i
...     return k
...
>>> find_last('aaaaa','aa')
3
>>> find_last("222222222", "")
9
>>> find_last("", "")
0
>>> find_last("", "3")
-1
于 2013-07-20T19:23:52.157 回答