Comprobar si una cadena contiene un número
La mayoría de las preguntas que he encontrado están sesgadas por el hecho de que buscan letras en sus números, mientras que yo busco números en lo que me gustaría que fuera una cadena sin números. Necesito ingresar una cadena y verificar si contiene algún número y si lo rechaza.
La función isdigit()
solo regresa True
si TODOS los caracteres son números. Solo quiero ver si el usuario ha ingresado un número, una oración como "I own 1 dog"
o algo así.
¿Algunas ideas?
Aceptado
Puedes usar any
la función, con la str.isdigit
función, así.
def has_numbers(inputString):
return any(char.isdigit() for char in inputString)
has_numbers("I own 1 dog")
# True
has_numbers("I own no dog")
# False
Alternativamente, puedes usar una expresión regular, como esta.
import re
def has_numbers(inputString):
return bool(re.search(r'\d', inputString))
has_numbers("I own 1 dog")
# True
has_numbers("I own no dog")
# False
Puedes usar una combinación de any
y str.isdigit
:
def num_there(s):
return any(i.isdigit() for i in s)
La función devolverá True
si existe un dígito en la cadena; en caso contrario False
.
Manifestación:
>>> king = 'I shall have 3 cakes'
>>> num_there(king)
True
>>> servant = 'I do not have any cakes'
>>> num_there(servant)
False