HOWTO · Python
if-Anweisungen mit Zeichenketten in Python
Erfahren Sie, wie Sie Zeichenketten in Python mit if vergleichen, Teilzeichenfolgen und erlaubte Antworten prüfen und bei Bedarf die Groß- und Kleinschreibung ignorieren.
Auf dieser Seite
Mit == vergleichen Sie den Inhalt von Zeichenketten, mit in prüfen Sie auf eine Teilzeichenfolge oder eine erlaubte Antwort, und mit Methoden wie lower() können Sie Vergleiche ohne Beachtung der Groß- und Kleinschreibung durchführen. Wählen Sie die Bedingung passend zur Aufgabe: Zeichenkettenvergleiche unterscheiden standardmäßig Groß- und Kleinschreibung, und is prüft die Objektidentität statt der Textgleichheit.
Grundlegender Zeichenkettenvergleich
Verwenden Sie ==, wenn zwei Zeichenketten denselben Text enthalten sollen, und !=, wenn sie unterschiedlich sein sollen. Die Namen auf beiden Seiten eines Vergleichs müssen definiert sein, bevor die Bedingung ausgeführt wird. Eine ausführlichere Erläuterung finden Sie unter Python-Zeichenketten vergleichen.
Das folgende kurze Beispiel prüft, ob ein Name übereinstimmt:
name = "Alice"
if name == "Alice":
print("Hello, Alice!")
else:
print("You're not Alice.")
Python vergleicht Zeichenketten unter Beachtung der Groß- und Kleinschreibung. Daher ist "Alice" == "alice" falsch. Mit len() können Sie auch die Länge vergleichen, wenn es um die Größe statt um den Inhalt geht:
word1 = "Python"
word2 = "Programming"
if len(word1) < len(word2):
print(f"{word1} is shorter than {word2}")
else:
print(f"{word1} is not shorter than {word2}")
Die Operatoren <, >, <= und >= vergleichen Zeichenketten lexikografisch anhand der Unicode-Codepunkte. Sie bewerten weder die Bedeutung von Wörtern noch bilden sie für jede Sprache die alphabetische Reihenfolge ab. Verwenden Sie für eine Sortierung, die Nutzenden angezeigt wird, ein geeignetes sprachabhängiges Sortierverfahren.
Das Schlüsselwort in bei Zeichenketten
Bei einer Zeichenkette prüft in, ob der linke Text als Teilzeichenfolge darin vorkommt. Dabei wird die Groß- und Kleinschreibung beachtet, und die Übereinstimmung muss kein eigenständiges Wort sein:
sentence = "Python is awesome"
if "awesome" in sentence:
print("The sentence contains 'awesome'")
Wenn Sie prüfen möchten, ob eine Eingabe genau einer von mehreren zulässigen Zeichenketten entspricht, verwenden Sie eine Sammlung. Im folgenden Beispiel wird die Antwort vor der Mitgliedschaftsprüfung vereinheitlicht:
user_input = "y"
if user_input.lower() in ["y", "yes", "yeah"]:
print("User agreed")
else:
print("User did not agree")
Weitere Beispiele zur Prüfung auf Teilzeichenfolgen finden Sie unter Prüfen, ob eine Zeichenkette eine andere enthält. Zum Auffinden wiederholter Treffer lesen Sie Alle Vorkommen eines Zeichens in einer Zeichenkette finden.
Vergleiche ohne Beachtung der Groß- und Kleinschreibung
Vereinheitlichen Sie beide Seiten, wenn beim Vergleich die Groß- und Kleinschreibung keine Rolle spielen soll. lower() ist eine gängige Wahl für einfache Vergleiche; casefold() ist für umfassendere Vergleiche ohne Beachtung der Groß- und Kleinschreibung bei Unicode-Text ausgelegt. Die Normalisierung verändert die Vergleichsweise. Setzen Sie sie daher nur ein, wenn die Aufgabe einen solchen Vergleich erfordert.
user_input = "YES"
if user_input.lower() == "yes":
print("Affirmative response received")
Dasselbe Muster funktioniert mit einer Mitgliedschaftsprüfung:
color = "RED"
if color.lower() in ["red", "blue", "green"]:
print("Color accepted")
else:
print("Color not accepted")
Verwenden Sie lower() oder upper() für eine einfache Umwandlung der Groß- und Kleinschreibung. Weitere Beispiele finden Sie unter Zeichenketten in Python in Klein- oder Großbuchstaben umwandeln.
Erweiterte Zeichenkettenvergleiche
Anagramme erkennen
Durch Sortieren der Zeichen lässt sich einfach prüfen, ob zwei Zeichenketten dieselben Zeichen in derselben Häufigkeit enthalten:
word1 = "listen"
word2 = "silent"
if sorted(word1) == sorted(word2):
print("The words are anagrams")
Dabei gelten Groß- und Kleinbuchstaben als unterschiedliche Zeichen; Leerzeichen und Satzzeichen werden ebenfalls berücksichtigt. Wenn diese Zeichen ignoriert werden sollen, normalisieren oder filtern Sie die Zeichenketten zuerst.
Zeichenkettenmethoden verwenden
Methoden wie startswith() und endswith() prüfen direkt, ob ein Text am Anfang oder Ende einer Zeichenkette steht:
filename = "document.txt"
if filename.endswith(".txt"):
print("Text file detected")
Mehrere Bedingungen kombinieren
Mit and, or und not können Sie Prüfungen kombinieren. Bei and müssen beide Teilbedingungen wahr sein, damit die gesamte Bedingung erfüllt ist:
name = "John Doe"
if name.startswith("John") and " " in name:
print("Name matches the expected format")
Dies ist nur eine einfache Textprüfung und validiert nicht alle möglichen Namensformate.
Identität vergleichen
is prüft, ob sich zwei Namen auf dasselbe Objekt beziehen. Verwenden Sie ==, um den Inhalt von Zeichenketten zu vergleichen. Die Objektidentität eignet sich nicht als zuverlässige Prüfung auf Textgleichheit.
first = "Python"
second = "Python"
if first == second:
print("The strings have equal contents")
Fazit
Verwenden Sie == oder != für den Inhalt von Zeichenketten, in für Teilzeichenfolgen oder die Mitgliedschaft in einer Sammlung und eine Normalisierung, wenn die Groß- und Kleinschreibung keine Rolle spielen soll. Für Prüfungen am Anfang oder Ende eines Textes eignen sich Zeichenkettenmethoden. Verwenden Sie für Textgleichheit ==; is beantwortet eine andere Frage zur Objektidentität.
Häufig gestellte Fragen
Unterscheiden Zeichenkettenvergleiche in Python Groß- und Kleinschreibung?
Ja. Standardmäßig sind "Python" und "python" unterschiedliche Zeichenketten. Normalisieren Sie beide Werte, wenn die Groß- und Kleinschreibung ignoriert werden soll.
Kann eine if-Anweisung mehrere Bedingungen für Zeichenketten prüfen?
Ja. Verknüpfen Sie Bedingungen mit and oder or. Klammern helfen, wenn sie die gewünschte Gruppierung verdeutlichen.
Worin unterscheiden sich == und is?
== vergleicht Werte; is prüft, ob zwei Referenzen auf dasselbe Objekt verweisen. Verwenden Sie ==, um Zeichenketteninhalte zu vergleichen.
Wie prüfe ich, ob eine Zeichenkette mit einem bestimmten Text beginnt oder endet?
Rufen Sie startswith() oder endswith() auf, zum Beispiel filename.endswith(".txt").
Kann ich reguläre Ausdrücke in einer if-Bedingung verwenden?
Ja. Rufen Sie bei Bedarf eine Funktion aus Pythons Modul re auf, etwa re.search(pattern, text), um ein Muster in der Bedingung zu prüfen. Für einfache Teilzeichenfolgenprüfungen ist in meist direkter.