Câu trả lời:
Bạn có thể sử dụng rfind()
hoặc liên kết Python2: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
Sự khác biệt là khi không tìm thấy chuỗi con, 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 rfind()
mã trả về -1
, bạn có thể muốn rindex()
cung cấp một thông báo lỗi dễ hiểu. Khác bạn có thể tìm kiếm trong vài phút mà giá trị bất ngờ -1
đến từ trong mã của bạn ...
>>> txt = '''first line
... second line
... third line'''
>>> txt.rfind('\n')
22
>>> txt.rindex('\n')
22
Các more_itertools
thư viện cung cấp các công cụ cho việc tìm kiếm các chỉ số của tất cả các nhân vật hoặc tất cả các chuỗi con .
Được
import more_itertools as mit
s = "hello"
pred = lambda x: x == "l"
Mã
Nhân vật
Bây giờ có rlocate
công cụ có sẵn:
next(mit.rlocate(s, pred))
# 3
Một công cụ bổ sung là locate
:
list(mit.locate(s, pred))[-1]
# 3
mit.last(mit.locate(s, pred))
# 3
Chất nền
Ngoài ra còn có một window_size
tham số có sẵn để định vị mục hàng đầu của một số mục:
s = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
substring = "chuck"
pred = lambda *args: args == tuple(substring)
next(mit.rlocate(s, pred=pred, window_size=len(substring)))
# 59
Không cố gắng phục hồi một bài viết không hoạt động, nhưng vì bài này chưa được đăng ...
(Đây là cách tôi đã làm nó trước khi tìm thấy câu hỏi này)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
Giải thích: Khi bạn đang tìm kiếm lần xuất hiện cuối cùng, thực sự bạn đang tìm kiếm lần xuất hiện đầu tiên trong chuỗi đảo ngược. Biết điều này, tôi đã làm s[::-1]
(trả về một chuỗi đảo ngược), và sau đó lập chỉ mục target
từ đó. Sau đó, tôi đã làm len(s) - 1 - the index found
bởi vì chúng tôi muốn chỉ mục trong chuỗi không đảo ngược (tức là bản gốc).
Xem ra, mặc dù! Nếu target
có nhiều hơn một ký tự, có lẽ bạn sẽ không tìm thấy nó trong chuỗi đảo ngược. Để khắc phục điều này, hãy sử dụng last_pos = len(s) - 1 - s[::-1].index(target[::-1])
, tìm kiếm phiên bản đảo ngược của target
.
bạn có thể sử dụng rindex()
hàm để có lần xuất hiện cuối cùng của một ký tự trong chuỗi
s="hellloooloo"
b='l'
print(s.rindex(b))
Phương thức chuỗi Python rindex ()
Mô tả
Phương thức chuỗi Python rindex () trả về chỉ mục cuối cùng trong đó chuỗi chuỗi con được tìm thấy hoặc đưa ra một ngoại lệ nếu không có chỉ mục đó tồn tại, tùy chọn hạn chế tìm kiếm thành chuỗi [beg: end].
Cú pháp
Sau đây là cú pháp của phương thức rindex () -
str.rindex(str, beg=0 end=len(string))
Tham số
str - Cái này chỉ định chuỗi cần tìm.
ăn xin - Đây là chỉ số bắt đầu, theo mặc định là 0
len - Đây là chỉ mục kết thúc, theo mặc định, nó bằng với độ dài của chuỗi.
Giá trị
trả về Phương thức này trả về chỉ mục cuối cùng nếu tìm thấy khác làm tăng ngoại lệ nếu không tìm thấy str.
Ví dụ Ví dụ
sau đây cho thấy việc sử dụng phương thức rindex ().
Bản thử trực tiếp
str1 = "this is string example....wow!!!";
str2 = "is";
print str1.rindex(str2)
print str1.index(str2)
Khi chúng tôi chạy chương trình trên, nó tạo ra kết quả như sau -
5
2
Tham chiếu: Phương thức Python String rindex () - Tutorialspoint
str
làm tên biến. Một tên biến khác mà mọi người nên tránh trong python làabc
; có một mô-đun được gọiabc
trong API gốc.