4 PEP 292: Sustituciones de cadena simplificadas

Hay nuevas clases en la biblioteca estándar que proporcionan un mecanismo alternativo para sustituir variables dentro de cadenas de texto; este estilo puede resultar más adecuado para aplicaciones en las que usuarios sin formación específica puedan editar plantillas.

El modo usual de sustituir variables por nombre es el operador %:

>>> '%(pag)i: %(tit)s' % {'pag':2, 'tit': 'El alcalde de Zalamea'}
'2: El alcalde de Zalamea'

Al escribir la cadena-plantilla, es común olvidar la "i" o la "s" tras el cierre del paréntesis. Esto no supone un problema si la plantilla está en un módulo de Python, porque se ejecuta el código, se obtiene un ``Unsupported format character'' ValueError y se arregla. Sin embargo, en una aplicación como Mailman, en la que las plantillas y sus traducciones son modificadas por usuarios desconocedores del lenguaje Python. La sintaxis de las cadenas de formato es compleja de explicar a tales usuarios y, si comenten un error, es difícil proporcionarles ayuda.

La PEP 292 añade una clase Template al módulo string que utiliza "$" para marcar las sustituciones:

>>> import string
>>> t = string.Template('$pag: $tit')
>>> t.substitute({'pag':2, 'tit': 'El alcalde de Zalamea'})
'2: El alcalde de Zalamea'

Si falta una clave del diccionario, el método substitute lanzará un KeyError. También hay un método safe_substitute que deja sin tocar las claves que faltan:

>>> t = string.Template('$pag: $tit')
>>> t.safe_substitute({'pag':3})
'3: $tit'

See Also:

PEP 292, Sustituciones de cadena simplificadas
Escrita e implementada por Barry Warsaw.

Consultar en Acerca de este documento... información para sugerir cambios.