Python string contains zum finden von teilstrings
Python string contains nutzt den in-Operator, um zu prüfen, ob ein Teilstring im Text vorkommt.
Nutze es, wenn du einen schnellen Ja/Nein-Test brauchst, um Logik zu verzweigen, Eingaben zu validieren oder Nachrichten zu filtern.
Es bietet eine einfache, lesbare Möglichkeit zu testen, ob Text einen Teilstring enthält.
Python String Contains-Beispiel Für Text-Matching
Ausgabe:
Die Ausgabe erscheint hier...
Ausgabe:
Sendungsverfolgung senden
So Funktioniert Dieses Beispiel
- Der String
statusenthält eine kurze Statusmeldung. - Der Ausdruck
"versendet" in statusführt einen Teilstring-Test aus und gibtTruezurück. - Da die Bedingung wahr ist, wird
printausgeführt. - Die Ausgabe zeigt, dass die Aktion nur dann ausgelöst wird, wenn das Schlüsselwort vorhanden ist.
Häufige Fehler
Fehler 1: Annehmen, dass die Prüfung nicht zwischen Groß- und Kleinschreibung unterscheidet.
subject = "Bestellung Versendet"
if "versendet" in subject:
print("Sendungsverfolgung senden")
subject = "Bestellung Versendet"
if "versendet" in subject.casefold():
print("Sendungsverfolgung senden")
Warum das passiert: in vergleicht Zeichen exakt, daher muss die Groß-/Kleinschreibung übereinstimmen. Normalisiere beide Strings (oft mit casefold()), wenn du einen case-insensitiven Check willst.
Fehler 2: find() in einer Wahrheitsprüfung verwenden.
message = "promo"
if message.find("pro"):
print("markieren")
message = "promo"
if "pro" in message:
print("markieren")
Warum das passiert: find() gibt den Index zurück, und Index 0 ist falsy, selbst wenn der Teilstring gefunden wurde. Nutze in für einen booleschen Contains-Check oder vergleiche find() mit -1, wenn du den Index brauchst.
Fehler 3: Vergessen, dass leere Strings immer matchen.
needle = ""
text = "rechnung 123"
if needle in text:
print("treffer")
needle = ""
text = "rechnung 123"
if needle and needle in text:
print("treffer")
Warum das passiert: Python behandelt den leeren String als Teilstring jedes Strings. Schütze dich vor leerer Eingabe, wenn sie “kein Treffer” bedeuten soll.
string contains vs find: was nutzen?
| Bedarf | Nutze |
|---|---|
| Nur eine Ja/Nein-Antwort | needle in text |
| Die Position des Treffers | text.find(needle) |
| Einen Fehler, wenn nicht gefunden | text.index(needle) |
Nutze in für den schnellsten und klarsten Membership-Test. Nutze find() oder index() nur, wenn du zusätzlich die Trefferposition brauchst oder ein Fehlschlag einen Fehler auslösen soll.
Performance-Überlegungen
Ein Contains-Check durchsucht den Text linear, daher ist jeder in-Test O(n) in der Länge des Textes. Für wiederholte case-insensitive Checks normalisiere den Text einmal (z. B. text = text.casefold()) und verwende ihn wieder, um zusätzliche Arbeit zu vermeiden. Wenn du viele verschiedene Muster in sehr großen Strings suchen musst, ziehe spezialisiertere Suche oder Regex nur dann in Betracht, wenn das Muster es erfordert.
Wann du Python string contains verwenden solltest
- Du brauchst einen schnellen Teilstring-Test, um zu entscheiden, welche Logik verzweigt wird.
- Du validierst Eingaben, indem du nach erforderlichen Schlüsselwörtern oder Markern suchst.
- Du möchtest den klarsten booleschen Test statt eines Index-Ergebnisses.
- Du brauchst keine Wildcards oder komplexen Muster; dafür nutze
re. - Du brauchst nicht die Trefferposition; wenn doch, nutze
find()oderindex().