Python: Überprüfen Sie, ob String einen Teilstring enthält

Die Überprüfung, ob eine Zeichenfolge eine Teilzeichenfolge enthält, hilft dabei, Bedingungen zu verallgemeinern und flexibleren Code zu erstellen. Abhängig von Ihrem Domänenmodell können Sie außerdem durch die Überprüfung, ob eine Zeichenfolge eine Teilzeichenfolge enthält, auf Felder eines Objekts schließen, wenn eine Zeichenfolge ein Feld in sich selbst codiert.

In diesem Leitfaden werfen wir einen Blick darauf So überprüfen Sie, ob eine Zeichenfolge eine Teilzeichenfolge enthält bei Python.

Das in Operator

Der einfachste Weg, zu überprüfen, ob ein Python-String einen Teilstring enthält, ist die Verwendung von in Betreiber.

Das in Der Operator wird verwendet, um Datenstrukturen auf Zugehörigkeit zu Python zu überprüfen. Es gibt einen booleschen Wert zurück (entweder True or False). Um in Python zu überprüfen, ob eine Zeichenfolge eine Teilzeichenfolge enthält, verwenden Sie die in Operator, wir rufen ihn einfach auf dem Superstring auf:

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Dieser Operator ist eine Abkürzung für den Aufruf eines Objekts __contains__ Methode und eignet sich auch gut zum Überprüfen, ob ein Element in einer Liste vorhanden ist. Es ist erwähnenswert, dass dies der Fall ist nicht nullsicher, also wenn unser fullstring zeigte darauf None, würde eine Ausnahme ausgelöst werden:

TypeError: argument of type 'NoneType' is not iterable

Um dies zu vermeiden, sollten Sie zunächst prüfen, ob darauf verwiesen wird None oder nicht:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Das String.index() Versandart

Der String-Typ in Python verfügt über eine Methode namens index() Dies kann verwendet werden, um den Startindex des ersten Vorkommens einer Teilzeichenfolge in einer Zeichenfolge zu ermitteln.

Wenn die Teilzeichenfolge nicht gefunden wird, a ValueError Es wird eine Ausnahme ausgelöst, die mit einem Try-Except-Else-Block behandelt werden kann:

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

Diese Methode ist nützlich, wenn Sie auch die Position der Teilzeichenfolge und nicht nur ihre Existenz innerhalb der gesamten Zeichenfolge kennen müssen. Die Methode selbst gibt den Index zurück:

print(fullstring.index(substring))

Allerdings ist dies ein ausführlicher Ansatz, um zu überprüfen, ob eine Zeichenfolge eine Teilzeichenfolge enthält.

Die String.find()-Methode

Die String-Klasse verfügt über eine weitere Methode namens find() was bequemer zu verwenden ist als index(), vor allem, weil wir uns nicht um die Behandlung von Ausnahmen kümmern müssen.

If find() findet keine Übereinstimmung, gibt es -1 zurück, andernfalls gibt es den Index ganz links des Teilstrings im größeren String zurück:

Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

Natürlich wird die gleiche Suche durchgeführt wie index() und gibt den Index des Anfangs des Teilstrings innerhalb des übergeordneten Strings zurück:

print(fullstring.find(substring))

Reguläre Ausdrücke (RegEx)

Reguläre Ausdrücke bieten eine flexiblere (wenn auch komplexere) Möglichkeit, Zeichenfolgen auf Musterübereinstimmung zu prüfen. Mit regulären Ausdrücken können Sie flexible und leistungsstarke Suchvorgänge in viel größeren Suchräumen durchführen, anstatt wie bisher nur einfache Prüfungen durchzuführen.

Python wird mit einem integrierten Modul für reguläre Ausdrücke ausgeliefert, genannt redem „Vermischten Geschmack“. Seine re Das Modul enthält eine aufgerufene Funktion search(), mit dem wir ein Teilzeichenfolgenmuster abgleichen können:

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

Diese Methode eignet sich am besten, wenn Sie eine komplexere Matching-Funktion benötigen, z. B. einen Matching ohne Berücksichtigung der Groß- und Kleinschreibung, oder wenn Sie mit großen Suchräumen arbeiten. Andernfalls sollten die Komplikationen und die langsamere Geschwindigkeit von Regex für einfache Anwendungsfälle für den Teilstring-Abgleich vermieden werden.

Über den Autor

Dieser Artikel wurde von Jacob Stopak geschrieben, einem Softwareberater und Entwickler mit Leidenschaft dafür, anderen dabei zu helfen, ihr Leben durch Code zu verbessern. Jacob ist der Schöpfer von Erster Commit – eine Website, die neugierigen Entwicklern dabei helfen soll, zu erfahren, wie ihre Lieblingsprogramme codiert sind. Das vorgestellte Projekt hilft Menschen Git lernen auf Codeebene.

Zeitstempel:

Mehr von Stapelmissbrauch