Skip to content

String-Vergleich in Python (exakte/teilweise Übereinstimmung, etc.)

Python

Dieser Artikel-Befehlszeilenvergleiche in Python.

  • Genaue Übereinstimmung (Gleichheitsvergleich):==, !=
  • Teilübereinstimmung:in, not in
  • Vorwärts-/Rückwärtsübereinstimmung:startswith(), endswith()
  • Bestellvergleich:<, <=, >, >=
  • Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung:upper(), lower()
  • Regex:re.search(), re.fullmatch()

Genaue Übereinstimmung (Gleichheitsvergleich):==, !=

Wie bei Zahlen bestimmt der Operator ==, ob zwei Strings gleich sind. Wenn sie gleich sind, wird True zurückgegeben; wenn nicht, wird False zurückgegeben.

print('abc' == 'abc')
# True

print('abc' == 'xyz')
# False

Es wird zwischen Groß- und Kleinschreibung unterschieden, und dasselbe gilt für Vergleiche mit anderen Operatoren und Methoden. Vergleiche ohne Berücksichtigung der Groß-/Kleinschreibung werden später beschrieben.

print('abc' == 'ABC')
# False

!= gibt True zurück, wenn sie nicht gleich sind, und False, wenn sie gleich sind.

print('abc' != 'xyz')
# True

print('abc' != 'abc')
# False

Teilübereinstimmung:in, not in

Verwenden Sie den in-Operator für teilweise Übereinstimmungen, dh ob eine Zeichenfolge die andere Zeichenfolge enthält.

x in y gibt True zurück, wenn x in y enthalten ist (x ist ein Teilstring von y), und False, wenn dies nicht der Fall ist. Wenn jedes Zeichen von x diskret in y enthalten ist, wird False zurückgegeben.

print('bbb' in 'aaa-bbb-ccc')
# True

print('xxx' in 'aaa-bbb-ccc')
# False

print('abc' in 'aaa-bbb-ccc')
# False

not in gibt True zurück, wenn es nicht enthalten ist, und False, wenn es enthalten ist.

print('xxx' not in 'aaa-bbb-ccc')
# True

print('bbb' not in 'aaa-bbb-ccc')
# False

in und not in Werden auch used, um die Existenz von Elementen in Einer Liste zu prüfen. Nichts finden Sie im folgenden Artikel.

Vorwärts-/Rückwärtsübereinstimmung:startswith(), endswith()

SIE sterben Zeichenfolgenmethode „startswith()“ für den Vorwärtsabgleich, dh ob eine Zeichenfolge mit der angegebenen Zeichenfolge beginnt.

s = 'aaa-bbb-ccc'

print(s.startswith('aaa'))
# True

print(s.startswith('bbb'))
# False

Sie können auch ein Tupel von Buchstaben angeben.

True wird zurückgegeben, wenn die Zeichenfolge mit einem der Elemente des Tupels beginnt, und False wird zurückgegeben, wenn die Zeichenfolge mit keinem von ihnen beginnt. Beachten Sie, dass ein Fehler ausgelöst WIRD, WENN SIE EINE Liste anstelle eines Tupels angeben.

print(s.startswith(('aaa', 'bbb', 'ccc')))
# True

print(s.startswith(('xxx', 'yyy', 'zzz')))
# False

# print(s.startswith(['a', 'b', 'c']))
# TypeError: startswith first arg must be str or a tuple of str, not list

SIE sterben Zeichenfolgenmethode „endswith()“ für den Rückwärtsabgleich, dh ob Eine Zeichenfolge mit der angegebenen Zeichenfolge endet. Seine Verwendung ist die gleiche wie startwith().

print(s.endswith('ccc'))
# True

print(s.endswith('bbb'))
# False

print(s.endswith(('aaa', 'bbb', 'ccc')))
# True

Bestellvergleich:<, <=, >, >=

Sie können Zeichenfolgen mit den Operatoren <, <=, > und >= sowie Zahlen vergleichen. Zeichenfolgen werden in lexikalischer Reihenfolge zusammengefasst.

print('a' < 'b')
# True

print('aa' < 'ab')
# True

print('abc' < 'abcd')
# True

Die Reihenfolge der Zeichen WIRD in Unicode-Codepunkten erfasst.

Sie können den Unicode-Codepunkt eines Zeichens mit der eingebauten Funktion ord() erhalten.

print(ord('a'))
# 97

print(ord('b'))
# 98

Großbuchstaben haben kleinere Codepunkte als Kleinbuchstaben.

print('Z' < 'a')
# True

print(ord('Z'))
# 90

If Eine Liste von Strings mit der Listenmethode sort() oder der eingebauten Funktion sorted() sortiert WIRD, WIRD sterben Reihenfolge anhand auch von Unicode-Codepunkten bestimmt.

print(sorted(['aaa', 'abc', 'Abc', 'ABC']))
# ['ABC', 'Abc', 'aaa', 'abc']

Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung:upper(), lower()

Bei allen bisher beschriebenen Operatoren und Methoden wird zwischen Groß- und Kleinschreibung unterschieden.

Wenn Sie einen Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung benötigen, können Sie Upper() oder Lower() verwenden, um beide Buchstaben in Groß- oder Kleinbuchstaben umzuwandeln.

s1 = 'abc'
s2 = 'ABC'

print(s1 == s2)
# False

print(s1.lower() == s2.lower())
# True

Regex:re.search(), re.fullmatch()

SIE can regelmäßige Ausdrücke für flexiblere Vergleiche verwenden.

Forschung()

Use you re.search() for partiellen, Vorwärts- und Rückwärtsabgleich. Beachten Sie, dass re.match() auch für den Vorwärtsabgleich used Werden kann, aber hier nicht besprochen WIRD.

Für reguläre Ausdrucksmuster can verschiedene Metazeichen (Sonderzeichen) used Werden, aber es ist auch möglich, einen String einfach so anzugeben, wie er ist. Ein Übereinstimmungsobjekt wird zurückgegeben, wenn die Zeichenfolge enthalten ist, und None, wenn dies nicht der Fall ist. Match-Objekte werden immer als True ausgewertet.

import re

s = 'aaa-AAA-123'

print(re.search('aaa', s))
# 

print(re.search('xxx', s))
# None

Das Metazeichen ^ entspricht dem Anfang der Zeichenfolge und $ entspricht dem Ende der Zeichenfolge.

print(re.search('^aaa', s))
# 

print(re.search('^123', s))
# None

print(re.search('aaa$', s))
# None

print(re.search('123$', s))
# 

Darüber hinaus stehen eine weitere Metazeichen und Sonderzeichenfolgen zur Verfügung.

Beispiel steht [AZ] für einen beliebigen Buchstaben des Großbuchstabenalphabets, und + bedeutet, dass das vorherige Muster einmal oder wiederholt wiederholt wird. Somit passt [AZ]+ zu jeder Teilzeichenfolge, die aus einem oder mehreren aufeinanderfolgenden alphabetischen Großbuchstaben besteht.

print(re.search('[A-Z]+', s))
# 

Im following Artikel FINDEN SIE typische Beispiele für reguläre Ausdrucksmuster, z. B. platzhalterähnliches Muster.

re.fullmatch()

Verwenden Sie re.fullmatch(), um zu prüfen, ob der gesamte String mit einem regulären Ausdrucksmuster übereinstimmt oder nicht. Selbst wenn einige Teile übereinstimmen, wird None zurückgegeben, wenn einige Teile nicht übereinstimmen.

s = '012-3456-7890'

print(re.fullmatch(r'd{3}-d{4}-d{4}', s))
# 

s = 'tel: 012-3456-7890'

print(re.fullmatch(r'd{3}-d{4}-d{4}', s))
# None

d steht für eine Zahl und {n} steht für n Wiederholungen. Da umgekehrte Schrägstriche in speziellen Sequenzen von regulären Ausdrücken wie d used Werden, ist es sinnvoll, unformatierte Buchstaben (r“ oder r““) zu verwenden, die umgekehrte Schrägstriche als Literalzeichen zu behandeln.

re.fullmatch() wurde in Python 3.4 hinzugefügt. In verschiedenen Versionen can SIE re.search() mit ^ und $ verwenden, um dasselbe zu tun. Sie können auch re.match() und $ verwenden, obwohl es hier nicht gezeigt wird.

s = '012-3456-7890'

print(re.search(r'^d{3}-d{4}-d{4}$', s))
# 

s = 'tel: 012-3456-7890'

print(re.search('^d{3}-d{4}-d{4}$', s))
# None

re.IGNORECASE

Durch die Angabe von re.IGNORECASE als Argument-Flags von Funktionen wie re.search() und re.fullmatch() ist ein Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung möglich.

s = 'ABC'

print(re.search('abc', s))
# None

print(re.search('abc', s, re.IGNORECASE))
#