Verifica che una stringa contenga un numero in Python
-
Funzione Python
any
constr.isdigit
per verificare se una stringa contiene un numero -
Usa la funzione
map()
per verificare se una stringa contiene un numero -
Usa
re.search(r'\d')
per verificare se una stringa contiene un numero
Questo articolo introduce come verificare se una stringa Python contiene un numero o meno.
La funzione incorporata di Python any
function insieme a str.isdigit
restituirà True
se la stringa data contiene un numero al suo interno; in caso contrario, restituisce False
.
Il metodo di ricerca di espressioni regolari Python con pattern r'\d'
potrebbe anche restituire True
se la stringa data contiene un numero.
Funzione Python any
con str.isdigit
per verificare se una stringa contiene un numero
La funzione any
restituisce True
se qualsiasi elemento del dato iterable
è True
; in caso contrario, restituisce False
.
str.isdigit()
restituisce True
se tutti i caratteri nella stringa data sono cifre, False
in caso contrario.
any(chr.isdigit() for chr in stringExample)
Se stringExample
contiene almeno un numero, allora il codice sopra restituisce True
perché chr.isdigit() per chr in stringExample
ha almeno un True
in iterable
.
- Esempio di lavoro
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))
Produzione:
True
False
True
Usa la funzione map()
per verificare se una stringa contiene un numero
Python map(function, iterable)
funzione applica function
a ogni elemento del dato iterable
e restituisce un iteratore che fornisce il risultato di cui sopra.
Pertanto, potremmo riscrivere la soluzione di cui sopra per,
any(map(str.isdigit, stringExample))
- Esempio di lavoro
str1 = "python1"
str2 = "nonumber"
str3 = "12345"
print(any(map(str.isdigit, str1)))
print(any(map(str.isdigit, str2)))
print(any(map(str.isdigit, str3)))
Produzione:
True
False
True
Usa re.search(r'\d')
per verificare se una stringa contiene un numero
re.search(r'\d', string)
pattern esegue la scansione della stringa
e restituisce l’oggetto match per la prima posizione che corrisponde al modello dato - \d
che significa qualsiasi numero compreso tra 0 e 9 e restituisce None
se non viene trovata alcuna corrispondenza.
import re
print(re.search(r"\d", "python3.8"))
# output: <re.Match object; span=(6, 7), match='3'>
L’oggetto match contiene la doppia tupla span
che indica la posizione iniziale e finale della match
e il contenuto corrispondente come match = '3'
.
La funzione bool()
potrebbe eseguire il cast del risultato re.search
dall’oggetto match
o da None
a True
o False
.
- Esempio di lavoro
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)))
Produzione:
True
False
True
In termini di runtime, la valutazione delle espressioni regolari è molto più veloce rispetto all’utilizzo delle funzioni stringa incorporate. Se il valore della stringa è considerevolmente grande, allora re.search()
è più ottimale rispetto all’utilizzo delle funzioni stringa.
Compilare l’espressione usando re.compile()
prima di eseguire la funzione search()
sulle stringhe date renderà anche il tempo di esecuzione ancora più veloce.
Cattura il valore di ritorno di compile()
in una variabile e chiama la funzione search()
all’interno di quella variabile. In questo caso, search()
avrà bisogno solo di un singolo parametro, cioè la stringa da cercare rispetto all’espressione compilata.
def hasNumber(stringVal):
re_numbers = re.compile("\d")
return False if (re_numbers.search(stringVal) == None) else True
In sintesi, le funzioni integrate any()
e isdigit()
possono essere facilmente usate insieme per controllare se una stringa contiene un numero.
Tuttavia, usando le funzioni di utilità search()
e compile()
all’interno del modulo delle espressioni regolari re
genererà risultati più velocemente delle funzioni di stringa incorporate. Quindi, se hai a che fare con valori o stringhe di grandi dimensioni, la soluzione delle espressioni regolari è molto più ottimale delle funzioni delle stringhe.
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 FacebookArticolo correlato - Python String
- Come controllare una stringa è vuota in modo pitonico
- Converti una stringa in nome variabile in Python
- Come rimuovere gli spazi bianchi in una stringa in Python
- Estrai numeri da una stringa in Python
- Come convertire una stringa in datario in Python
- Come convertire una stringa in minuscola in Python 2 e 3