Python String index: So bestimmen Sie die Position eines Substrings

Mit der index()-Methode lässt sich eine Suche auf einem Python String ausführen, um den Index eines Python Substrings herauszufinden. Dabei können Sie entweder den ganzen Python String oder nur ein Teil davon als Suchgebiet festlegen.

Python String index: Syntax und Funktionsweise

Die Syntax der index-Methode lässt sich sehr leicht erklären. Die Methode kann mit ein, zwei oder drei Argumenten aufgerufen werden, wobei die letzten beiden optional sind. Das erste Argument ist immer der Substring, wonach der String untersucht werden soll. Die beiden optionalen Argumente sind die Indizes, bei denen die Suche gestartet bzw. gestoppt werden soll. Diese sollten nur übergeben werden, wenn tatsächlich nur ein bestimmter Bereich des Strings nach dem Substring untersucht werden soll. Der folgende Code-Abschnitt veranschaulicht die Syntax dieser Methode:

string.index(substring)
string.index(substring, start, end)
Python

In diesem Beispiel ist string ein beliebiger String und substring der Substring, nach dem gesucht werden soll. start und end sind jeweils die start- und end-Indizes der Suche. Wenn kein end-Index angegeben wird (also insgesamt nur zwei Argumente), wird einfach bis zum Ende des Strings gesucht. Die Methode gibt als Rückgabewert den Index des ersten Vorkommens des Substrings zurück. Wenn also ein Substring mehrfach vorkommt, werden alle Vorkommen nach dem ersten von index() ignoriert. Das folgende Beispiel verdeutlicht die Funktionsweise der Methode.

string = "Ich bin ein String"
print(string.index("String"))
print(string.index("in"))
# Ausgabe: 5 (das "in" in "bin")
print(string.index("in", 7, len(string) - 1))
# Ausgabe: 9 (das "in" in "ein")
print(string.index("in", 7))
# Ausgabe: 9 (das "in" in "ein")
print(string.index("Python"))
# Exception-Fehlermeldung: ValueError
Python

Wie im obigen Beispiel zu sehen ist, wird beim zweiten Aufruf von index() nur der Index des “in”s in “bin” zurückgegeben. Die anderen Vorkommen von “in” werden ignoriert. Beim letzten Aufruf von index() kann man sehen, dass die Methode eine “ValueError” Exception zurückgibt, wenn der Substring nicht enthalten ist. Diese Exception wird auch ausgegeben, wenn negative Indizes eingegeben werden oder der start-Index größer ist als der end-Index. Falls einer dieser Fälle in Ihrem Programm möglich ist, sollte die Exception entsprechend behandelt werden.

Tipp

Die Verarbeitung von Strings ist eine Aufgabe, die in der Python-Programmierung immer wieder vorkommt. Daher ist es wichtig, dass Strings in einem passenden Format gespeichert und ausgegeben werden. In unserem Artikel zum Python-String-Format erklären wir, wie Sie das Format Ihrer Strings an Ihre Zwecke anpassen können.

Alternative: Die find-Methode

Je nachdem, wozu Sie die index-Methode brauchen, könnte die find-Methode eventuell die bessere Wahl sein. Sie ist fast identisch zur index-Methode, mit einem wichtigen Unterschied: Wenn der Substring nicht gefunden wird, wird keine Exception ausgelöst. Stattdessen wird einfach -1 zurückgegeben. Da eine unbehandelte Exception zum Absturz Ihres Programms führen würde, kann dies sehr vorteilhaft sein, wenn Sie eine mögliche Exception nicht behandeln können oder wollen. Die Behandlung der Exception kann sogar mit einer if-Bedingung simuliert werden, wie im folgenden Beispiel:

string = "Python"
if(string.find("Py") != -1):
    print("Substring enthalten! Index: ", string.find("Py"))
else:
    print("Substring nicht enthalten!")
Python

In diesem Beispiel gibt es im Fall, dass der Substring nicht gefunden wird, eine Verzweigung, genau wie bei der Behandlung einer Exception. Der größte Unterschied ist, dass find() in diesem Beispiel mehrfach ausgeführt werden muss, wenn der Substring gefunden wird.

Tipp

Python ist eine der flexibelsten Programmiersprachen, die es gibt. Entsprechend kann man in dieser Sprache sehr viele Operationen auf Strings ausführen. Wir zeigen in einem anderen Artikel mehrere Wege, wie Sie Python Strings vergleichen können.

Beispiele für Python String index

Nun zeigen wir zwei Beispiele dafür, wie index() in einem Programm zum Einsatz kommen kann. Zuerst stellen wir ein einfaches Beispiel vor, dann ein etwas komplexeres.

string = "Fischers Fritz fischt frische Fische, frische Fische fischt Fischers Fritz"
print("Der zu überprüfende String ist ", string)
while(True):
    sub = input("Substring eingeben: ")
    try:
        print("Der Index ist: ", string.index(sub))
    except:
        print("Der Substring ist nicht enthalten :/")
Python

In diesem Beispiel wird in einem String nach einem Substring gesucht. Anschließend wird ausgegeben, ob der Substring im String enthalten ist und ggf. an welchem Index er steht. In diesem Fall ist der zu untersuchende String vorbestimmt, aber der Substring wird von der Nutzerin bzw. dem Nutzer jedes Mal neu eingegeben.

def try_except(start):
    try:
        return string.index(sub, start)
    except:
        return -1
string = input("String eingeben: ")
sub = input("Substring eingeben: ")
vorkommen = 0
start = 0
while(try_except(start) != -1):
    start = try_except(start) + len(sub)
    vorkommen = vorkommen + 1
print("Vorkommen: ", vorkommen)
Python

In diesem Beispiel wird ein von der Nutzerin bzw. dem Nutzer eingegebener String nach Vorkommen eines Substrings geprüft. Wenn im String ein Vorkommen des Substrings gefunden wird, wird die Anzahl der Vorkommen inkrementiert und die Suche ab dieser Stelle erneut gestartet. Wenn das Ende des Strings erreicht wird, wird die gesamte Anzahl der Vorkommen ausgegeben und das Programm beendet.

Tipp

Sie suchen einen Weg, Ihre Webanwendung schnell und leicht zu veröffentlichen? Dann ist Deploy Now von IONOS die perfekte Plattform für Sie!