Prüfen, ob Zeichenkette enthält eine Zahl in Python
-
Verwenden Sie die Funktionen
any()
undisdigit()
, um zu prüfen, ob eine Zeichenkette eine Zahl in Python enthält -
Mit
re.search()
prüfen, ob eine Zeichenkette eine Zahl enthält in Python
In diesem Tutorial werden verschiedene Möglichkeiten vorgestellt, in Python zu prüfen, ob eine Zeichenkette eine Zahl enthält.
Verwenden Sie die Funktionen any()
und isdigit()
, um zu prüfen, ob eine Zeichenkette eine Zahl in Python enthält
Die eingebaute Funktion any()
nimmt eine Iterable und liest sie als boolesche Werte. Wenn mindestens ein Element innerhalb der Iterable als True
identifiziert wird, gibt die Funktion True
zurück und gibt False
zurück, wenn es keinen einzigen True
-Wert gibt.
Wir können die Funktion any()
mit der eingebauten String-Methode isdigit()
kombinieren, die prüft, ob ein Zeichenkette irgendwelche Ziffernzeichen innerhalb seiner Größe enthält, um True
zurückzugeben, wenn ein Zeichenkette in Python eine Zahl enthält.
Lassen Sie uns zum Beispiel zwei String-Variablen deklarieren, eine mit einer Zahl und eine ohne. Anschließend deklarieren wir eine Funktion, die prüft, ob die Zeichenketten eine Zahl enthalten.
string1 = "String Number One"
string2 = "String Number 2"
def hasNumber(stringVal):
return any(elem.isdigit() for elem in stringVal)
print(string1, "has number:", hasNumber(string1))
print(string2, "has number:", hasNumber(string2))
Um den Code weiter zu verkürzen, können wir eine Lambda-Funktion deklarieren, die dieselben beiden Funktionen enthält, um die Zeichenketten zu prüfen.
string1 = "String Number One"
string2 = "String Number 2"
def hasNumber(stringVal):
return any(elem.isdigit() for elem in stringVal)
print(string1, "has number:", hasNumber(string1))
print(string2, "has number:", hasNumber(string2))
Ausgabe:
String Number One has number: False
String Number 2 has number: True
Mit re.search()
prüfen, ob eine Zeichenkette eine Zahl enthält in Python
Python unterstützt Operationen, die reguläre Ausdrücke manipulieren, indem es das Modul re
verwendet. Wir können die Funktion re.search()
verwenden, um zu prüfen, ob eine gegebene Zeichenkette eine Zahl darin enthält.
re.search()
akzeptiert zwei Hauptparameter, der erste ist der reguläre Ausdruck und der zweite ist die Zeichenkette, die geprüft werden soll, ob sie mit dem Ausdruck übereinstimmt.
Der Ausdruck, der für die Übereinstimmung mit einer beliebigen Ziffer verwendet wird, ist entweder \d
oder [0-9]
. Wir verwenden in diesem Beispiel \d
als ersten Parameter für search()
.
import re
string1 = "Number One Two Three"
string2 = "Number 123"
def hasNumber(stringVal):
if re.search("\d", stringVal) == None:
return False
else:
return True
print(string1, "contains number:", hasNumber(string1))
print(string2, "contains number:", hasNumber(string2))
Die Funktion kann mit einer Lambda-Deklaration und einem ternären Operator wie folgt in eine einzige Zeile gekürzt werden:
def hasNumber(stringVal):
return False if re.search("\d", stringVal) == None else True
Ausgabe:
Number One Two Three contains number: False
Number 123 contains number: True
In Bezug auf die Laufzeit ist die Auswertung regulärer Ausdrücke viel schneller als die Verwendung eingebauter String-Funktionen. Wenn der Wert der Zeichenkette sehr groß ist, dann ist re.search()
optimaler als die Verwendung der String-Funktionen.
Wenn Sie den Ausdruck mit re.compile()
kompilieren, bevor Sie die Funktion search()
auf die angegebenen Zeichenketten anwenden, wird die Ausführungszeit sogar noch schneller.
Fangen Sie den Rückgabewert von compile()
in eine Variable und rufen Sie die Funktion search()
innerhalb dieser Variable auf. In diesem Fall benötigt search()
nur einen einzigen Parameter, nämlich die Zeichenkette, die mit dem kompilierten Ausdruck verglichen werden soll.
def hasNumber(stringVal):
re_numbers = re.compile("\d")
return False if (re_numbers.search(stringVal) == None) else True
Zusammenfassend lässt sich sagen, dass die eingebauten Funktionen any()
und isdigit()
leicht zusammen verwendet werden können, um zu prüfen, ob eine Zeichenkette eine Zahl enthält.
Wenn Sie jedoch die Utility-Funktionen search()
und compile()
innerhalb des Moduls für reguläre Ausdrücke re
verwenden, erhalten Sie die Ergebnisse schneller als mit den eingebauten String-Funktionen. Wenn Sie es also mit großen Werten oder Zeichenketten zu tun haben, ist die Lösung mit regulären Ausdrücken viel optimaler als die String-Funktionen.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInVerwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert