Prüfen, ob Zeichenkette enthält eine Zahl in Python

Rayven Esplanada 30 Januar 2023
  1. Verwenden Sie die Funktionen any() und isdigit(), um zu prüfen, ob eine Zeichenkette eine Zahl in Python enthält
  2. Mit re.search() prüfen, ob eine Zeichenkette eine Zahl enthält in Python
Prüfen, ob Zeichenkette enthält eine Zahl 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.

Rayven Esplanada avatar Rayven Esplanada avatar

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.

LinkedIn

Verwandter Artikel - Python String