Descubre cómo funciona str.isalnum() en Python y cuándo puede fallar

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

Algunos de nuestros reconocimientos:

Premios KeepCoding

El método isalnum() es uno de los métodos de Python para verificar situaciones específicas y te sirve para validar si una cadena contiene exclusivamente números y letras. En el día de hoy te queremos enseñar a manejarlo y cómo puedes evitar errores dentro de él.

str.isalnum() en Python

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

El método str.isalnum() hace parte de los métodos integrados en Python que pueden trabajar con cadenas de texto. Este comprueba si todos los caracteres de una cadena son alfanuméricos, es decir, si son letras (de la a a la 1, incluyendo letras mayúsculas y minúsculas) y/o números (del 0 al 9). Dado el caso de que esta condición se cumpla, str.isalnum() devuelve True; pero de lo contrario devuelve False.

string.isalnum()

Entre sus características encontramos que:

  • No requiere parámetros adicionales.
  • Devuelve False si la cadena contiene caracteres especiales como espacios, símbolos o puntuación.
  • Funciona con cualquier combinación de letras y números.

Abordemos un ejemplo de str.isalnum() para entenderlo mejor:

texto = "Python123"
print(texto.isalnum()) # Resultado: True

texto = "Python 123"
print(texto.isalnum()) # Resultado: False (por el espacio)

texto = "Python!"
print(texto.isalnum()) # Resultado: False (por el símbolo de exclamación)

¿En qué casos es posible que falle str.isalnum()?

Si bien str.isalnum() parece simple de usar, existen algunos cuantos escenarios en los que podría no funcionar como se espera o ser la mejor opción. Veamos esos casos:

  • Cadenas con espacios: aquí str.isalnum devuelve False en caso de que la cadena contenga espacios, incluso si estos están rodeados por caracteres alfanuméricos:
texto = "Hello World"
print(texto.isalnum()) # Resultado: False
  • Caracteres especiales: cualquier otro caracter que no sea letra o número, como el @, el # o el !, hará que el sistema y el método fallen:
texto = "Python@2023"
print(texto.isalnum()) # Resultado: False
  • Cadenas vacías: en caso de que apliques el método a una cadena vacía, el resultado también será siempre False:
texto = ""
print(texto.isalnum()) # Resultado: False
  • Caracteres Unicode: Este método soporta caracteres Unicode alfanuméricos, ya sea letras de alfabetos u otros, pero esto puede ser confuso si esperamos únicamente caracteres, por ejemplo, en inglés:
texto = "Привет123"  # Texto en ruso con números
print(texto.isalnum()) # Resultado: True

¿Qué diferencias guarda str.isalnum() con otros métodos similares?

Python ofrece varios métodos para analizar el contenido de una cadena. Veamos esta tabla comparativa entre str.isalnum() y otros métodos relacionados:

Método¿Qué valida?Ejemplo válidoEjemplo inválido
isalnum()Comprueba si todos los caracteres son letras o números.“Python123”“Python 123”
isalpha()Comprueba si todos los caracteres son letras.“Python”“Python123”
isdigit()Comprueba si todos los caracteres son dígitos.“123”“Python123”
isspace()Comprueba si todos los caracteres son espacios.” ““Python 123”

Recomendaciones a seguir para usar str.isalnum()

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Para evitar errores y aprovechar al máximo str.isalnum(), ten en cuenta estas recomendaciones:

  • Normaliza las entradas: si, dado el caso, trabajas con datos de diferentes lenguajes, te recomendamos normalizar las cadenas y así aseguras resultados consistentes:
texto = "PYTHON123"
print(texto.lower().isalnum()) # Resultado: True
  • Combina con otras validaciones: si requieres validar cadenas más complejas, puedes combinar str.isalnum con otros métodos, por ejemplo:
texto = "Python 123"
if texto.replace(" ", "").isalnum():
print("Cadena válida")
else:
print("Cadena inválida")
  • Manejo de errores: siempre debes tener en cuenta casos límite, ya sean cadenas vacías o caracteres inesperados.
texto = ""
if texto and texto.isalnum():
print("Cadena válida")
else:
print("Cadena inválida o vacía")

Casos de uso: ejemplos

Veamos dos casos en los que podemos hacer uso de str.isalnum para realizar distintas operaciones:

  • Validación de nombres de usuario: En casos en los que los nombres de usuarios solo pueden contener letras y números, str.isalnum es muy eficiente:
username = input("Introduce tu nombre de usuario: ")
if username.isalnum():
print("Nombre de usuario válido")
else:
print("El nombre de usuario solo puede contener letras y números")
  • Filtrado de cadenas: Puedes hacer un filtro de las listas d ecadenas, así te quedas exclusivamente con las alfanuméricas:
cadenas = ["Python123", "Hello World!", "2023", "KeepCoding!"]
validas = [cadena for cadena in cadenas if cadena.isalnum()]
print(validas) # Resultado: ['Python123', '2023']

Si te interesó este tema y queires seguir aprendiendo sobre tópicos similares, tenemos para ti el bootcamp en programación inicial, que te prepara para un mundo lleno de oportunidades en el sector tecnológico. ¡Inscríbete ya y comienza a cambiar tu camino hacia el éxito.

Ramón Maldonado

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

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.