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:
Consultar en Acerca de este documento... información para sugerir cambios.