En muchas aplicaciones se puede recibir una cadena de texto que solamente debe contener valor numérico. Esto es, una cadena que solamente debería contener números y, a lo sumo, un punto como separador decimal. Si un usuario introduce este dato, es necesario validar el contenido de la cadena antes de poder emplearla dentro del código. En esta entrada, se verá cómo comprobar que una cadena sólo contiene números en Python mediante el uso de expresiones regulares, creando una función que se puede usar para la tarea.
Uso de expresiones regulares para verificar que una cadena sólo contiene números en Python
Validar que una cadena de texto sólo contiene números es algo que se puede hacer fácilmente mediante el uso de expresiones regulares. Las cuales permiten definir patrones de búsqueda complejos en cadenas de texto.
Para verificar si una cadena contiene sólo números en Python, podemos seguir estos pasos:
- Importar el módulo
re
de Python, que proporciona soporte para expresiones regulares. - Definir una expresión regular que describa el patrón que debe contener la cadena de texto. En este caso, se desea buscar sólo números (
\d
) y puntos (\.
). - Utilizar la función
re.match()
para verificar si la cadena cumple con el patrón especificado.
A continuación, se muestra un ejemplo de cómo se puede hacer esto en Python:
import re # Cadena de texto a verificar cadena = '123.45' # Expresión regular para buscar solo números y puntos patron = '^[0-9.]+$' # Verificar si la cadena contiene solo números y puntos if re.match(patron, cadena): print('La cadena contiene solo números y puntos.') else: print('La cadena contiene caracteres no numéricos o un formato incorrecto.')
En este ejemplo, la cadena '123.45'
cumple con el patrón especificado y, por lo tanto, se imprimirá “La cadena contiene sólo números y puntos.”. Sin embargo, si la cadena no cumple con el patrón, se imprimirá “La cadena contiene caracteres no numéricos o un formato incorrecto.”
Creación de una función para validar que una cadena sólo contiene números en Python
El código del ejemplo anterior se puede implementar en una función para facilitar su uso en cualquier programa. Una posible implementación es la que se muestra a continuación.
import re def contiene_numeros(cadena): """ Verifica si una cadena de texto contiene solo números y puntos. Parámetros: cadena : str La cadena de texto a verificar. Devuelve: bool True si la cadena contiene solo números y puntos, False en caso contrario. """ patron = '^[0-9.]+$' return bool(re.match(patron, cadena))
Lo que se puede evaluar con múltiples ejemplos.
ejemplos = [ "123.45", "3.14159", "42", "abc123", "1234.56", "3", ] # Iterar sobre los ejemplos y verificar si son números o no for ejemplo in ejemplos: if contiene_numeros(ejemplo): print(f'"{ejemplo}" es un número válido.') else: print(f'"{ejemplo}" no es un número válido.')
"123.45" es un número válido.
"3.14159" es un número válido.
"42" es un número válido.
"abc123" no es un número válido.
"1234.56" es un número válido.
"3" es un número válido.
Ahora, esta función se puede incluir en cualquier programa para verificar si los valores introducidos por el usuario son válidos o no.
Conclusiones
Comprobar si unas cadenas de texto contienen solamente valores numéricos es una tarea habitual. Mediante el uso de expresiones regulares se puede realizar esta validación de una forma rápida y eficiente. Proceso que además se puede factorizar en una función y hacer de este modo el código completamente reutilizable en diferentes proyectos.
Deja una respuesta