Jawaban:
Anda dapat menggunakan tautanrfind()
atau 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
Perbedaannya adalah ketika substring tidak ditemukan, rfind()
kembali -1
sambil rindex()
memunculkan pengecualian ValueError
(tautan Python2:) ValueError
.
Jika Anda tidak ingin memeriksa rfind()
kode kembali -1
, Anda dapat memilih rindex()
yang akan memberikan pesan kesalahan yang bisa dimengerti. Jika tidak, Anda dapat mencari menit dari mana nilai tak terduga -1
berasal dari dalam kode Anda ...
>>> txt = '''first line
... second line
... third line'''
>>> txt.rfind('\n')
22
>>> txt.rindex('\n')
22
Coba ini:
s = 'hello plombier pantin'
print (s.find('p'))
6
print (s.index('p'))
6
print (s.rindex('p'))
15
print (s.rfind('p'))
The more_itertools
menawarkan perpustakaan alat untuk menemukan indeks dari semua karakter atau semua substring .
Diberikan
import more_itertools as mit
s = "hello"
pred = lambda x: x == "l"
Kode
Karakter
Sekarang ada rlocate
alat yang tersedia:
next(mit.rlocate(s, pred))
# 3
Alat pelengkap adalah locate
:
list(mit.locate(s, pred))[-1]
# 3
mit.last(mit.locate(s, pred))
# 3
Substring
Ada juga window_size
parameter yang tersedia untuk mencari item utama dari beberapa item:
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
Tidak mencoba menghidupkan kembali pos yang tidak aktif, tetapi karena ini belum diposting ...
(Ini adalah bagaimana saya melakukannya sebelum menemukan pertanyaan ini)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
Penjelasan: Ketika Anda mencari kejadian terakhir, benar-benar Anda mencari kejadian pertama dalam string terbalik. Mengetahui hal ini, saya lakukan s[::-1]
(yang mengembalikan string terbalik), dan kemudian diindeks target
dari sana. Lalu saya lakukan len(s) - 1 - the index found
karena kami ingin indeks dalam string (yaitu asli) yang tidak dapat dikembalikan .
Hati-hati! Jika target
lebih dari satu karakter, Anda mungkin tidak akan menemukannya di string terbalik. Untuk memperbaikinya, gunakan last_pos = len(s) - 1 - s[::-1].index(target[::-1])
, yang mencari versi terbalik dari target
.
Anda dapat menggunakan rindex()
fungsi untuk mendapatkan kemunculan karakter terakhir dalam string
s="hellloooloo"
b='l'
print(s.rindex(b))
Metode Python String rindex ()
Deskripsi
Metode string Python rindex () mengembalikan indeks terakhir tempat str substring ditemukan, atau memunculkan pengecualian jika tidak ada indeks seperti itu, secara opsional membatasi pencarian ke string [mohon: akhiri].
Sintaksis
Berikut adalah sintaks untuk metode rindex () -
str.rindex(str, beg=0 end=len(string))
Parameter
str - Ini menentukan string yang akan dicari.
mohon - Ini adalah indeks awal, secara default 0
len - Ini adalah indeks akhir, secara default sama dengan panjang string.
Nilai Pengembalian
Metode ini mengembalikan indeks terakhir jika ditemukan sebaliknya memunculkan pengecualian jika str tidak ditemukan.
Contoh
berikut menunjukkan penggunaan metode rindex ().
Demo Langsung
str1 = "this is string example....wow!!!";
str2 = "is";
print str1.rindex(str2)
print str1.index(str2)
Ketika kami menjalankan program di atas, itu menghasilkan hasil sebagai berikut -
5
2
str
sebagai nama variabel. Nama variabel lain yang harus dihindari orang dengan python adalahabc
; ada modul yang disebutabc
di API asli.