Yanıtlar:
rfind()
Veya Python2 bağlantılarını kullanabilirsiniz :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
Alt dize bulunmazsa Aradaki fark ise rfind()
döner -1
iken rindex()
bir özel durum ValueError
(Python2 link: ValueError
).
rfind()
Dönüş kodunu kontrol etmek istemiyorsanız -1
, rindex()
bunun anlaşılabilir bir hata mesajı vermesini tercih edebilirsiniz . Aksi takdirde -1
, kodunuzdan beklenmeyen değerin geldiği dakikaları arayabilirsiniz ...
>>> txt = '''first line
... second line
... third line'''
>>> txt.rfind('\n')
22
>>> txt.rindex('\n')
22
more_itertools
Her şeyden indeksleri bulmak için kütüphane teklifler araçları karakterleri veya tüm alt dizeleri .
verilmiş
import more_itertools as mit
s = "hello"
pred = lambda x: x == "l"
kod
Karakterler
Şimdi mevcut rlocate
araç var:
next(mit.rlocate(s, pred))
# 3
Tamamlayıcı bir araç locate
:
list(mit.locate(s, pred))[-1]
# 3
mit.last(mit.locate(s, pred))
# 3
altdizgelerin
window_size
Birkaç öğenin başındaki öğeyi bulmak için bir parametre de vardır :
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
Etkin olmayan bir yayını yeniden diriltmeye çalışmıyorum, ancak bu henüz gönderilmediğinden ...
(Bu soruyu bulmadan önce ben böyle yaptım)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
Açıklama: Son örneği ararken, gerçekten ters dize içindeki ilk örneği arıyorsunuz. Bunu bilerek, s[::-1]
(ters bir dize döndürür) yaptım ve oradan dizine target
. Sonra yaptım len(s) - 1 - the index found
çünkü indeks geri dönüştürülmemiş (yani orijinal) dize istiyorum.
Yine de dikkat edin! Birden target
fazla karakterse, büyük olasılıkla ters çevrilmiş dizede bulamazsınız. Bu, kullanım düzeltmek için last_pos = len(s) - 1 - s[::-1].index(target[::-1])
bir ters versiyonu için, hangi aramalar target
.
rindex()
dizedeki bir karakterin son tekrarlamasını almak için işlevi kullanabilirsiniz
s="hellloooloo"
b='l'
print(s.rindex(b))
Python String rindex () Yöntemi
Açıklama
Python string yöntemi rindex (), alt dize str'nin bulunduğu son dizini döndürür veya böyle bir dizin yoksa isteğe bağlı olarak aramayı dizgiyle [beg: end] kısıtlar.
Sözdizimi
Aşağıda rindex () yönteminin sözdizimi verilmiştir -
str.rindex(str, beg=0 end=len(string))
Parametreler
str - Bu, aranacak dizeyi belirtir.
beg - Bu başlangıç dizinidir, varsayılan olarak 0
len - Bu bitiş endeksidir, varsayılan olarak dizenin uzunluğuna eşittir.
Dönüş Değeri
Bu yöntem, aksi takdirde bulunmazsa son dizini döndürür.
Örnek
Aşağıdaki örnek, rindex () yönteminin kullanımını gösterir.
Canlı Demo
str1 = "this is string example....wow!!!";
str2 = "is";
print str1.rindex(str2)
print str1.index(str2)
Programın üzerinde çalıştığımızda aşağıdaki sonucu üretir -
5
2
str
değişken adı olarak kullanılmaması için +1 . İnsanların python'da kaçınmaları gereken bir diğer değişken adıabc
;abc
yerel API'da adlandırılan bir modül var .