Du liest:
Python contains: Zeichenketten innerhalb eines Strings ermitteln

Python contains: Zeichenketten innerhalb eines Strings ermitteln

von Patrick
20.04.2020
Jetzt Python programmieren lernen

Sehr oft müssen wir als Programmierer herausfinden, ob sich eine bestimmte Zeichenfolge in einem uns vorliegenden Text befindet.
Die unterschiedlichen Programmiersprachen bieten dazu verschiedene Methoden und Funktionen an.
In Python können wir den Operator in benutzen, über dessen Verwendung ich dir gleich mehr erzähle.

1. String in String finden mit index und in

Du kannst mittels der Methode index einfach ermitteln, ob ein String in einem anderen String enthalten ist.
Um jedoch das Gegenteil zu ermitteln, bietet sich eine andere Methode an.

string = 'HelloWorld'
print(string.index('W'))
# 5
print(bool(string.index('W')))
# True
print(string.index('X'))
# ValueError
print(bool(string.index('X')))
# ValueError

Wie du siehst, bekommst du einen ValueError, wenn du eine Zeichenkette suchst, die im String nicht enthalten ist.
Du kannst auch darum herum arbeiten, indem du zu diesem Zweck eine eigene Funktion schreibst:

def BuchstabeInZeichenkette(Buchstabe, Zeichenkette):
    try:
        Zeichenkette.index(Buchstabe)
        return True
    except ValueError:
        return False
print(BuchstabeInZeichenkette('W', 'HelloWorld'))
# True
print(BuchstabeInZeichenkette('World', 'HelloWorld'))
# True
print(BuchstabeInZeichenkette('X', 'HelloWorld'))
# False

Einfacher jedoch ist es, den Operator in zu verwenden, welcher mit True oder False angibt, ob der String im zu prüfenden String vorhanden ist.

string = 'HelloWorld'
print('Hello' in string)
# True
print('Hallo' in string)
# False

2. “in” in eigenen Klassen mit __contains__

Um eigene Klassen zu schreiben, die den Operator in unterstützen, musst du lediglich die magic method __contains__, wie im folgenden Beispiel gezeigt, implementieren:

class Container(object):
    def __init__(self, text):
        self.text = text

    def __contains__(self, string):
        return string in self.text

container = Container('CodeCitrus')
print('Code' in container)
# True
print('Hello' in container)
# False

3. Fazit

Zu ermitteln, ob sich ein Buchstabe oder eine Zeichenkette in einer anderen Zeichenkette befindet ist leicht mit in und lässt sich mittels der Python magic method __contains__ auch einfach in eigene Klassen implementieren, was uns auch hier das Leben wesentlich vereinfachen kann.

Hast du irgendetwas nicht verstanden? Hast du Anregungen oder Verbesserungsvorschläge? Hat dir dieser Artikel gefallen? Schreib mir bitte einen Kommentar!



Bislang gibt es keine Kommentare. Markier dein Revier und sei der Erste!

Schreibe einen Kommentar

Das könnte dich auch interessieren