¿Cómo verifica si una cadena contiene solo números?
Lo he probado aquí. Me gustaría ver la forma más sencilla de lograr esto.
import string
def main():
isbn = input("Enter your 10 digit ISBN number: ")
if len(isbn) == 10 and string.digits == True:
print ("Works")
else:
print("Error, 10 digit number was not inputted and/or letters were inputted.")
main()
if __name__ == "__main__":
main()
input("Press enter to exit: ")
False
ya questring.digits == True
siempre se evalúa comoFalse
.Respuestas:
Querrás usar el
isdigit
método en tustr
objeto:De la
isdigit
documentación :fuente
isdigit
, pero genera unValueError
if si se pasa aint()
.Uso
str.isdigit
:fuente
try: assert str(int(foo)) == foo; except (AssertionError,ValueError): #handle
y me sentí feo como el pecado. ¡Gracias!Utilice la función de cadena isdigit :
fuente
También puedes usar la expresión regular,
por ejemplo: -1) palabra = "3487954"
por ejemplo: -2) palabra = "3487.954"
por ejemplo: -3) palabra = "3487.954 328"
Como puede ver los 3, por ejemplo, significa que no hay ninguno en su cadena. Para que pueda seguir las soluciones respectivas dadas con ellos.
fuente
re.match('^[0-9\.]*$',word)
falla por flotadores.if(bool(re.search(r'\d', word)))
funciona bien sin embargo.¿Qué pasa con los números flotantes , números negativos , etc. Todos los ejemplos anteriores estarán equivocados?
Hasta ahora obtuve algo como esto, pero creo que podría ser mucho mejor:
solo será verdadero si hay uno o no '.' en la cadena de dígitos.
devolverá falso
fuente
Como se señaló en este comentario, ¿cómo verifica en Python si una cadena contiene solo números? el
isdigit()
método no es totalmente exacto para este caso de uso, ya que devuelve True para algunos caracteres similares a dígitos:Si esto debe evitarse, las siguientes funciones simples verifican si todos los caracteres de una cadena son un dígito entre "0" y "9":
Utilizado en el ejemplo de la pregunta:
fuente
all(ch in string.digits for ch in s)
.Puedes usar try catch block aquí:
fuente
except ValueError:
int("1_000")
no conduce a un error, por ejemplo.Como cada vez que encuentro un problema con la verificación es porque el str puede ser None a veces, y si el str puede ser None, solo usar str.isdigit () no es suficiente ya que obtendrá un error
y luego debes validar primero que str es None o not. Para evitar una rama múltiple si, una forma clara de hacer esto es:
Espero que esto ayude a las personas que tienen el mismo problema que yo.
fuente
Hay dos métodos en los que puedo pensar para verificar si una cadena tiene todos los dígitos de
Método 1 (Usando la función isdigit () incorporada en python): -
Método 2 (Realización de manejo de excepciones en la parte superior de la cadena): -
La salida del código anterior será:
fuente
puede usar el método str.isdigit () o el método str.isnumeric ()
fuente