Chcę znaleźć pozycję (lub indeks) ostatniego wystąpienia określonego podłańcucha w danym ciągu wejściowym str
.
Załóżmy na przykład, że łańcuch wejściowy jest, str = 'hello'
a podłańcuch jest target = 'l'
, to powinien dać wynik 3.
W jaki sposób mogę to zrobić?
str
jako nazwy zmiennej. Inną nazwą zmiennej, której ludzie powinni unikać w pythonie, jestabc
;abc
w natywnym API jest moduł o nazwieMożna użyć
rfind()
albo python2 linki:rindex()
rfind()
rindex()
Różnica polega na tym, że nie można znaleźć podciągu,
rfind()
zwraca-1
podczas zgłaszaniarindex()
wyjątkuValueError
(łącze Python2:)ValueError
.Jeśli nie chcesz sprawdzać
rfind()
kodu powrotu-1
, możesz preferowaćrindex()
dostarczenie zrozumiałego komunikatu o błędzie. W przeciwnym razie możesz wyszukać minuty, w których nieoczekiwana wartość-1
pochodzi z Twojego kodu ...Przykład: Wyszukiwanie ostatniego znaku nowej linii
źródło
Skorzystaj z
str.rindex
metodyźródło
Spróbuj tego:
źródło
Do
more_itertools
oferty biblioteki narzędzia do znajdowania indeksów wszystkich znaków lub wszystkich podciągów .Dany
Kod
Postacie
Teraz dostępne jest
rlocate
narzędzie:Uzupełniającym narzędziem jest
locate
:Podciągi
Dostępny jest również
window_size
parametr umożliwiający zlokalizowanie wiodącego elementu kilku przedmiotów:źródło
Nie próbuję wskrzesić nieaktywnego posta, ale ponieważ nie został on jeszcze opublikowany ...
(Tak to zrobiłem przed znalezieniem tego pytania)
Objaśnienie: Gdy szukasz ostatniego wystąpienia, tak naprawdę szukasz pierwszego wystąpienia w odwróconym ciągu. Wiedząc o tym, zrobiłem
s[::-1]
(co zwraca odwrócony ciąg), a następnie zindeksowałemtarget
stamtąd. Potem zrobiłem,len(s) - 1 - the index found
ponieważ chcemy indeks w nieodwróconym (tj. Oryginalnym) ciągu.Uważaj jednak! Jeśli
target
jest więcej niż jeden znak, prawdopodobnie nie znajdziesz go w odwróconym ciągu. Aby to naprawić, użyjlast_pos = len(s) - 1 - s[::-1].index(target[::-1])
, który szuka odwróconej wersjitarget
.źródło
Jeśli nie chcesz używać rfind, to załatwi sprawę /
źródło
możesz użyć
rindex()
funkcji, aby uzyskać ostatnie wystąpienie znaku w ciąguźródło
Metoda rindex () w języku Python String
Opis
Metoda ciągu znaków w Pythonie rindex () zwraca ostatni indeks, w którym znaleziono ciąg podłańcucha, lub zgłasza wyjątek, jeśli taki indeks nie istnieje, opcjonalnie ograniczając wyszukiwanie do łańcucha [beg: end].
Składnia
Poniżej znajduje się składnia metody rindex () -
Parametry
str - określa ciąg do przeszukania.
beg - jest to indeks początkowy, domyślnie jego wartość 0
len - jest to indeks kończący, domyślnie jest równy długości łańcucha.
Zwracana wartość
Ta metoda zwraca ostatni indeks, jeśli zostanie znaleziony, w przeciwnym razie generuje wyjątek, jeśli nie zostanie znaleziony str.
Przykład
Poniższy przykład ilustruje użycie metody rindex ().
Demo na żywo
! / usr / bin / python
Gdy uruchomimy program powyżej, generuje następujący wynik -
Ref: Python String rindex () Metoda - Tutorialspoint
źródło