CAPÍTULO 7 Procesamiento de texto
Además de las herramientas que se han visto en cadenas de texto, la librería estándar nos ofrece una serie de módulos para procesamiento de texto que nos harán la vida más fácil a la hora de gestionar este tipo de datos.
El módulo string proporciona una serie de constantes muy útiles para manejo de «strings», además de distintas estrategias de formateado de cadenas.
Las constantes definidas en este módulo son las siguientes:
Ejercicio
Dada una cadena de texto, compruebe si todos sus caracteres son dígitos ASCII. Ignore los espacios en blanco.
Ejemplo
- Entrada: This is it
- Salida: True
El módulo string también nos permite usar plantillas con interpolación de variables. Algo similar a los f-strings pero con otro tipo de sintaxis.
Lo primero es definir la plantilla. Las variables que queramos interporlar deben ir precedidas del signo dólar $:
Ahora podemos realizar la sustitución con los valores que nos interesen:
Hay que prestar atención cuando el identificador de variable está seguido por algún carácter que, a su vez, puede formar parte del identificador. En este caso hay que utilizar llaves para evitar la ambigüedad:
Sustitución segura
En el caso de que alguna de las variables que estamos interpolando no exista o no tenga ningún valor, obtendremos un error al sustituir:
Para ello Python nos ofrece el método safe_substitute() que no emite error si alguna variable no es especificada:
Casos de uso
A primera vista podría parecer que este sistema de plantillas no aporta gran ventaja sobre los f-strings que ya hemos visto. Sin embargo hay ocasiones en los que puede resultar muy útil.
La mayoría de estas situaciones tienen que ver con la oportunidad de definir el «string». Si en el momento de crear la plantilla aún no están disponibles las variables de sustitución, podría interesar utilizar la estrategia que nos proporciona este módulo.
Supongamos un ejemplo en el que tenemos una estructura de «url» y queremos únicamente sustituir una parte de ella. Para no tener que repetir la cadena de texto completa en un «f-string», podríamos seguir este enfoque: