Comprobar si una cadena contiene un número

Resuelto DonnellyOverflow asked hace 11 años • 20 respuestas

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 Truesi 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?

DonnellyOverflow avatar Nov 08 '13 19:11 DonnellyOverflow
Aceptado

Puedes usar anyla función, con la str.isdigitfunció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
thefourtheye avatar Nov 08 '2013 12:11 thefourtheye

Puedes usar una combinación de anyy str.isdigit:

def num_there(s):
    return any(i.isdigit() for i in s)

La función devolverá Truesi 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
aIKid avatar Nov 08 '2013 12:11 aIKid