¿Qué es str.isdigit() en Python y funciona con caracteres especiales? Evita estos errores

| Última modificación: 16 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el momento en que empiezas a trabajar con Python, encuentras que validar datos es una tarea del día a día. Para hacer tu vida más simple, llega el método str.isdigit(), y por eso en este artículo te vamos a explicar qué es y en qué consiste.

str.isdigit() en Python

¿Qué es str.isdigit() en Python?

El método str.isdigit es una función que ya viene integrada con Python y nos permite verificar si todos los caracteres de una cadena son dígitos. En caso de que lo sean, devuelve True; de lo contrario, devuelve False. Su sintaxis es la siguiente:

string.isdigit()

Como podemos ver, dentro de su estructura:

  • No necesita parámetros, esto hace que sea fácil de implementar.
  • Considera dígitos tanto en caracteres numéricos regulares (0-9) como en caracteres de dígitos especiales, como exponentes (²).

Veamos un ejemplo:

texto = "12345"
print(texto.isdigit()) # Resultado: True

texto = "123a"
print(texto.isdigit()) # Resultado: False

texto = "²"
print(texto.isdigit()) # Resultado: True

Como puedes ver, incluso caracteres como ² son considerados dígitos por str.isdigit(). Esto puede ser de gran utilidad, pero al mismo tiempo puede llevar a confusiones.

¿Funciona con caracteres especiales?

En este punto es donde las cosas se ponen interesantes. Contrario a lo que se podría pensar, str.isdigit() no funciona solo con números que usamos frecuentemente, sino que también acepta caracteres Unicode que representan dígitos, por ejemplo:

  • \u0030 (el 0 en Unicode)
  • \u00B2 (el exponente ² en Unicode)

Veamos un ejemplo:

a = "\u0030"  # Representa el número 0
b = "\u00B2" # Representa el exponente ²

print(a.isdigit()) # Resultado: True
print(b.isdigit()) # Resultado: True

Esto significa que str.isdigit() puede dar resultados inesperados si estás procesando cadenas con caracteres especiales o unicode.

¿Qué diferencias guarda str.isdigit con otros métodos de validación similares?

Python, además de str.isdigit(), nos ofrece diferentes opciones para validar, entre ellas encontramos:

Método¿Qué valida?Ejemplo válidoEjemplo inválido
isdigit()Comprueba si todos los caracteres son dígitos, incluidos caracteres especiales como ².“123”, “²”“123a”, “1.23”
isnumeric()Acepta dígitos y otros caracteres numéricos como fracciones.“123”, “½”“123a”, “ABC”
isdecimal()Solo acepta dígitos decimales estándar.“123”“½”, “²”

Por lo tanto, el uso de str.isdigit() depende de tus necesidades. Si buscas validar exclusivamente números estándar, quizá necesites optar por str.isdecimal().

¿Qué errores se pueden cometer al usar str.isdigit()?

Si bien podemos usar str.isdigit para muchísimas cosas, es fácil caer en ciertos errores. Veamos algunos, así tienes la posibilidad de evitarlos:

  • Asumir que solo funciona con números estándar: como ya te mencionamos más arriba, str.isdigit() también funciona con caracteres como 2 válidos, así que esto puede causar problemas si estás esperando únicamente dígitos entre 0 y 9. Si es necesario evitar esto, puedes combinarlo con otras validaciones, por ejemplo:
texto = "²"
if texto.isdigit() and texto.isdecimal():
print("Número válido")
else:
print("No es un número estándar")
  • Olvidar manejar cadenas vacías: si le aplicas str.isdigit() a una cadena vacía, este siempre devolverá false, así que asegúrate de validar este caso:
texto = ""
if texto and texto.isdigit():
print("Número válido")
else:
print("Entrada inválida")
  • No considerar locales o codificaciones: En caso de que gestiones datos de diferentes regiones o lenguajes, podrías encontrarte con caracteres unicode inesperados. Es una buena práctica la de normalizar las entradas antes d eusar str.isdigit(), veamos:
import unicodedata

texto = "²"
texto_normalizado = unicodedata.normalize("NFKD", texto)
if texto_normalizado.isdigit():
print("Número válido")
else:
print("No es un número estándar")

¿Cuándo deberías usar str.isdigit()?

Este método es muy recomendado en los siguientes casos:

  1. Validar entradas de usuarios: Úsalo para verificar que un campo de texto contiene solo dígitos antes de convertirlo en un número.
  2. Procesamiento de texto: Filtra cadenas que contienen únicamente dígitos.
  3. Validaciones rápidas: Cuando necesitas una solución rápida y directa para comprobar si una cadena es numérica.

Si te interesa seguir aprendiendo sobre tecnología, no dudes en unirte a nuestro bootcamp de programación inicial, en donde adquirirás herramientras prácticas para iniciar tu camino hacia el mundo laboral. ¡No esperes más y gana el éxito ahora!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos