2012-03-05 46 views

Trả lời

311

Sử dụng .rfind():

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

Cũng không sử dụng str như tên biến hoặc bạn sẽ bóng được xây dựng trong str().

30

Sử dụng phương pháp str.rindex.

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

Hãy thử điều này:

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

Bạn có thể sử dụng rfind() hoặc rindex()
python2 liên kết: 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 

Sự khác biệt là khi chuỗi không được tìm thấy, rfind() trả về -1 trong khi rindex() tăng ngoại lệ ValueError (liên kết Python2: ValueError).

Nếu bạn không muốn kiểm tra mã trả lại rfind()-1, bạn có thể thích rindex() sẽ cung cấp thông báo lỗi dễ hiểu. Khác mà bạn có thể tìm kiếm phút trong đó giá trị bất ngờ -1 đang đến từ bên trong mã của bạn ...

1

Thư viện more_itertools cung cấp các công cụ cho việc tìm kiếm nhân vật và chuỗi con:

s = "hello" 
list(mit.locate(s, lambda x: x == "l"))[-1] 
# 3 

s = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?" 
substring = "chuck" 
pred = lambda w: w == tuple(substring) 
list(mit.locate(mit.windowed(s, len(substring)), pred=pred))[-1] 
# 59 

Tài liệu cho các công cụ thảo luận: locate, windowed .

0

Nếu bạn không muốn sử dụng rfind thì điều này sẽ làm các trick/

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 
Các vấn đề liên quan