543 Stimmen

Index des letzten Vorkommens einer Teilzeichenkette in einer Zeichenkette finden

Ich möchte die Position (oder den Index) des letzten Vorkommens einer bestimmten Teilzeichenkette in einer gegebenen Eingabezeichenkette finden str .

Nehmen wir zum Beispiel an, die Eingabezeichenkette lautet str = 'hello' und die Teilzeichenkette lautet target = 'l' dann sollte es 3 ausgeben.

Wie kann ich das tun?

4voto

Rubel Punkte 886

In diesem Fall sind beide rfind() y rindex() string-Methoden verwendet werden, beide geben den höchsten Index in der Zeichenkette zurück, bei dem die Teilzeichenkette gefunden wird, wie unten dargestellt.

test_string = 'hello'
target = 'l'
print(test_string.rfind(target))
print(test_string.rindex(target))

Aber eines sollte man bei der Verwendung beachten rindex() Methode, rindex() Methode löst einen ValueError [substring not found] aus, wenn der Zielwert nicht innerhalb der gesuchten Zeichenkette gefunden wird, andererseits rfind() wird einfach -1 zurückgegeben.

3voto

pylang Punkte 33775

En more_itertools Bibliothek bietet Werkzeuge zum Auffinden von Indizes für alle Zeichen oder alle Teilzeichenfolgen .

Gegeben

import more_itertools as mit

s = "hello"
pred = lambda x: x == "l"

Code

Zeichen

Jetzt gibt es die rlocate Werkzeug verfügbar:

next(mit.rlocate(s, pred))
# 3

Ein ergänzendes Instrument ist locate :

list(mit.locate(s, pred))[-1]
# 3

mit.last(mit.locate(s, pred))
# 3

Unterbegriffe

Außerdem gibt es eine window_size für die Suche nach dem führenden Element von mehreren Elementen zur Verfügung:

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

2voto

Wise4Christ Punkte 29

Python String rindex() Methode

Beschreibung
Die Python-String-Methode rindex() gibt den letzten Index zurück, in dem die Teilzeichenkette str gefunden wurde, oder löst eine Ausnahme aus, wenn kein solcher Index existiert, wobei die Suche optional auf string[beg:end] beschränkt werden kann.

Syntax
Die Syntax für die Methode rindex() lautet wie folgt

str.rindex(str, beg=0 end=len(string))

Parameter
str Hier wird die zu durchsuchende Zeichenfolge angegeben.

beg Dies ist der Startindex, standardmäßig ist es 0

len Dies ist der Endindex, der standardmäßig gleich der Länge der Zeichenkette ist.

Rückgabewert
Diese Methode gibt den letzten Index zurück, wenn er gefunden wurde, andernfalls löst sie eine Ausnahme aus, wenn str nicht gefunden wird.

Beispiel
Das folgende Beispiel zeigt die Verwendung der Methode rindex().

Live-Demo

!/usr/bin/python

str1 = "this is string example....wow!!!";
str2 = "is";

print str1.rindex(str2)
print str1.index(str2)

Wenn wir das obige Programm ausführen, ergibt sich folgendes Ergebnis

5
2

_Ref: [Python String rindex() Methode - TutorialPunkt](https://www.tutorialspoint.com/python/string_rindex.htm#:~:text=Python%20string%20method%20rindex(),string%5Bbeg%3Aend%5D.)_

1voto

Salam Punkte 808

Wenn Sie nicht wollen rfind dann ist dies der richtige Weg/

def find_last(s, t):
    last_pos = -1
    while True:
        pos = s.find(t, last_pos + 1)
        if pos == -1:
            return last_pos
        else:
            last_pos = pos

1voto

Chand Punkte 11
# Last Occurrence of a Character in a String without using inbuilt functions
str = input("Enter a string : ")
char = input("Enter a character to serach in string : ")
flag = 0
count = 0
for i in range(len(str)):
    if str[i] == char:
        flag = i
if flag == 0:
    print("Entered character ",char," is not present in string")
else:
    print("Character ",char," last occurred at index : ",flag)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X