Ich möchte die Position (oder den Index) des letzten Auftretens eines bestimmten Teilstrings in einer bestimmten Eingabezeichenfolge finden str
.
Angenommen, die Eingabezeichenfolge ist str = 'hello'
und die Teilzeichenfolge ist target = 'l'
, dann sollte sie 3 ausgeben.
Wie kann ich das machen?
str
als Variablenname verwendet werden soll. Ein anderer Variablenname, den Benutzer in Python vermeiden sollten, istabc
:abc
In der nativen API wird ein Modul aufgerufen .Sie können
rfind()
oder Python2-Links verwenden:rindex()
rfind()
rindex()
Der Unterschied ist , wenn der Teil nicht gefunden wird ,
rfind()
kehrt-1
währendrindex()
löst eine AusnahmeValueError
(Python2 Link:ValueError
).Wenn Sie den
rfind()
Rückkehrcode nicht überprüfen-1
möchtenrindex()
, wird möglicherweise eine verständliche Fehlermeldung angezeigt . Andernfalls können Sie nach Minuten suchen, in denen der unerwartete Wert-1
aus Ihrem Code stammt ...Beispiel: Suche nach dem letzten Zeilenumbruchzeichen
quelle
Verwenden Sie die
str.rindex
Methode.quelle
Versuche dies:
quelle
Die
more_itertools
Bibliothek bietet Tools zum Suchen von Indizes aller Zeichen oder aller Teilzeichenfolgen .Gegeben
Code
Figuren
Jetzt ist das
rlocate
Tool verfügbar:Ein ergänzendes Werkzeug ist
locate
:Teilzeichenfolgen
Es steht auch ein
window_size
Parameter zum Auffinden des führenden Elements mehrerer Elemente zur Verfügung:quelle
Ich versuche nicht, einen inaktiven Beitrag wiederzubeleben, aber da dieser noch nicht veröffentlicht wurde ...
(So habe ich es gemacht, bevor ich diese Frage gefunden habe)
Erläuterung: Wenn Sie nach dem letzten Vorkommen suchen, suchen Sie tatsächlich nach dem ersten Vorkommen in der umgekehrten Zeichenfolge. Da ich das wusste, tat ich es
s[::-1]
(was eine umgekehrte Zeichenfolge zurückgibt) und indizierte dann dietarget
von dort. Dann habe ich getan,len(s) - 1 - the index found
weil wir den Index in der nicht rückgängig gemachten wollen (dh ursprünglichen) Zeichenfolge haben wollen.Aber aufgepasst! Wenn
target
es sich um mehr als ein Zeichen handelt, werden Sie es wahrscheinlich nicht in der umgekehrten Zeichenfolge finden. Um dies zu beheben, verwenden Sielast_pos = len(s) - 1 - s[::-1].index(target[::-1])
, das nach einer umgekehrten Version von suchttarget
.quelle
Wenn Sie rfind nicht verwenden möchten, reicht dies aus
quelle
Mit der
rindex()
Funktion können Sie das letzte Vorkommen eines Zeichens in einer Zeichenfolge abrufenquelle
Python String rindex () Methode
Beschreibung Die
Python-String-Methode rindex () gibt den letzten Index zurück, in dem der Teilstring str gefunden wurde, oder löst eine Ausnahme aus, wenn kein solcher Index vorhanden ist, und beschränkt die Suche optional auf string [beg: end].
Syntax
Es folgt die Syntax für die Methode rindex () -
Parameter
str - Dies gibt die zu durchsuchende Zeichenfolge an.
betteln - Dies ist der Startindex, standardmäßig seine 0
len - Dies ist der Endindex, der standardmäßig der Länge der Zeichenfolge entspricht.
Rückgabewert
Diese Methode gibt den letzten Index zurück, wenn er gefunden wird. Andernfalls wird eine Ausnahme ausgelöst, wenn str nicht gefunden wird.
Beispiel
Das folgende Beispiel zeigt die Verwendung der Methode rindex ().
Live-Demo
! / usr / bin / python
Wenn wir das obige Programm ausführen, wird folgendes Ergebnis erzielt:
Ref: Python String rindex () Methode - Tutorialspoint
quelle