Python contains: Zeichenketten innerhalb eines Strings ermitteln

    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 20.04.2020
    zuletzt aktualisiert am: 02.02.2023

    Die Python contains-Methode!

    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.

    Ein String im 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

    “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

    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!

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig