Wie man eine Zeichenkette, die eine Zahl enthält, in Python prüft

Jinku Hu 30 Januar 2023
  1. Python-Funktion any mit str.isdigit zur Prüfung, ob eine Zeichenkette eine Zahl enthält
  2. map() Funktion
  3. re.search(r'\d') um zu prüfen, ob eine Zeichenkette eine Zahl enthält
Wie man eine Zeichenkette, die eine Zahl enthält, in Python prüft

Dieser Artikel stellt vor, wie geprüft werden kann, ob eine Python-Zeichenkette eine Zahl enthält oder nicht.

Die in Python eingebaute Funktion any function zusammen mit str.isdigit gibt True zurück, wenn die gegebene Zeichenkette eine Zahl enthält, andernfalls gibt sie False zurück.

Die Python-Suchmethode für reguläre Ausdrücke mit dem Muster r'\d' könnte auch True zurückgeben, wenn die gegebene Zeichenkette eine Zahl enthält.

Python-Funktion any mit str.isdigit zur Prüfung, ob eine Zeichenkette eine Zahl enthält

any Funktion gibt True zurück, wenn irgendein Element der gegebenen iterabel True ist, andernfalls gibt sie False zurück.

str.isdigit() gibt True zurück, wenn alle Zeichen in der gegebenen Zeichenkette Ziffern sind, andernfalls False.

any(chr.isdigit() for chr in stringExample)

Wenn stringExample mindestens eine Zahl enthält, dann gibt der obige Code True zurück, weil chr.isdigit() for chr in stringExample mindestens ein True in der iterabel hat.

Arbeitsbeispiel

str1 = "python1"
str2 = "nonumber"
str3 = "12345"

print(any(chr.isdigit() for chr in str1))
print(any(chr.isdigit() for chr in str2))
print(any(chr.isdigit() for chr in str3))

Ausgabe:

True
False
True

map() Funktion

Python map(function, iterable) fuction wendet auf jedes Element der gegebenen iterable eine Funktion an und gibt einen Iterator zurück, der das obige Ergebnis liefert.

Daher könnten wir die obige Lösung umschreiben zu,

any(map(str.isdigit, stringExample))

Arbeitsbeispiel

str1 = "python1"
str2 = "nonumber"
str3 = "12345"

print(any(map(str.isdigit, str1)))
print(any(map(str.isdigit, str2)))
print(any(map(str.isdigit, str3)))

Ausgabe:

True
False
True

re.search(r'\d') um zu prüfen, ob eine Zeichenkette eine Zahl enthält

re.search(r'\d', string) pattern scannt die String und gibt das übereinstimmende Objekt für die erste Stelle zurück, die mit dem gegebenen Muster übereinstimmt - \d, was eine beliebige Zahl zwischen 0 und 9 bedeutet und None zurückgibt, wenn keine Übereinstimmung gefunden wird.

import re

print(re.search(r"\d", "python3.8"))
# output: <re.Match object; span=(6, 7), match='3'>

Das Match-Objekt enthält das 2-Tupel span, das die Start- und Endposition des Matches angibt, und auch den übereinstimmenden Inhalt wie match = '3'.

Die Funktion bool() könnte das Ergebnis der re.search von match object oder None auf True oder False casten.

Arbeitsbeispiel

import re

str1 = "python12"
str2 = "nonumber"
str3 = "12345"

print(bool(re.search(r"\d", str1)))
print(bool(re.search(r"\d", str2)))
print(bool(re.search(r"\d", str3)))

Ausgabe:

True
False
True
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Python String