Pregunta 1¿Cuál es el resultado de string.Template("Hi $name").substitute(name="Carlos")?
string y textwrap — Constantes de caracteres, plantillas y formato
Aprende las constantes string.ascii_letters / digits, la sustitución $name de string.Template y la eliminación de sangrado con textwrap.dedent más el ajuste de ancho con fill.
Para qué sirven string y textwrap
string y textwrap son módulos auxiliares que complementan el manejo cotidiano de cadenas. string ofrece constantes de caracteres (conjuntos de letras, dígitos y símbolos) y Template (sustitución de plantillas estilo $name); textwrap se encarga del formato de cadenas multilínea (eliminación de sangría y ajuste de ancho). Los usarás cuando las f-strings o replace no sean suficientes.
string — Constantes de caracteres y sustitución de plantillas
El módulo string tiene dos tipos de funciones. La primera son las constantes de caracteres como string.ascii_letters (52 letras), string.digits (0–9) y string.punctuation (símbolos), que te ahorran definir tú mismo "qué cuenta como letra / dígito".
La segunda es string.Template: incrustas variables prefijadas con $ estilo $name en una cadena y luego las reemplazas con substitute(name="valor"). Se parece a las f-strings (f"{name}"), pero Template tiene un parser simple y seguro, lo que lo hace ideal cuando la plantilla misma proviene de entrada del usuario (como plantillas de cuerpo de email).
$name en una cadena por valores mediante substitute.| Constante / Clase | Contenido | Uso |
|---|---|---|
| string.ascii_lowercase | abcdefghijklmnopqrstuvwxyz | 26 letras minúsculas |
| string.ascii_uppercase | ABCDEFGHIJKLMNOPQRSTUVWXYZ | 26 letras mayúsculas |
| string.ascii_letters | las dos anteriores unidas (52 caracteres) | comprobación de letras, generación de cadenas aleatorias |
| string.digits | 0123456789 | comprobación de dígitos |
| string.punctuation | ! " # $ % & ' ... etc. | comprobación de símbolos |
| string.Template(s) | clase de plantilla estilo $name | cuerpos de email, plantillas de notificaciones |
textwrap — Quitar sangrías de triple comilla y ajustar ancho
textwrap es un módulo de la biblioteca estándar para embellecer cadenas. Las dos funciones que más usarás son textwrap.dedent (que elimina la sangría inicial común de un texto escrito en triple comilla) y textwrap.fill (que ajusta una cadena larga a un ancho dado).
Cuando escribes cadenas multilínea como """...""" en el código, la sangría a nivel de código fuente queda incrustada en la propia cadena. dedent elimina solo el espacio en blanco inicial común, así tu código sigue bien indentado mientras la cadena resulta limpia.
| Función | Qué hace | Devuelve |
|---|---|---|
| textwrap.dedent(text) | elimina la sangría inicial común | la cadena limpia |
| textwrap.fill(text, width=N) | ajusta al ancho N como una sola cadena | una sola cadena con saltos de línea |
| textwrap.wrap(text, width=N) | divide en líneas al ancho N | lista de cadenas |
| textwrap.shorten(text, w) | si el resultado no cabría en el ancho N, termina con [...] | la cadena truncada |
import textwrap
# dedent: quitar la sangría de una cadena con triple comilla
raw = """
Hola.
Qué buen día hoy.
"""
print(textwrap.dedent(raw).strip())
# Hola.
# Qué buen día hoy.
# fill: ajuste de ancho (el inglés lo muestra mejor)
long_text = "Python is a language that lets you work quickly and integrate systems."
print(textwrap.fill(long_text, width=30))
# Python is a language that
# lets you work quickly and
# integrate systems.
Combina dedent con strip
Las cadenas con triple comilla a menudo empiezan y terminan con un salto de línea, por lo que el one-liner textwrap.dedent(raw).strip() (dedent + recortar espacios alrededor) es un patrón común. strip es un método de cadena built-in que elimina espacios en blanco (incluidos saltos de línea) de ambos extremos.
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Cuál elimina la sangría inicial común de un texto escrito en triple comilla (con sangría a nivel de código fuente)?
Pregunta 3¿Qué hace textwrap.fill(text, width=20)?