Invertir cadenas de formato de estilo C en Python (`%`)
Introducción y configuración
Supongamos que tengo una cadena 'plantilla' * del formulario,
>>> template = """My %(pet)s ate my %(object)s.
... This is a float: %(number)0.2f.
... %(integer)10d is an integer on a newline."""
Con esta plantilla puedo generar una nueva cadena con,
>>> d = dict(pet='dog', object='homework', number=7.7375487, integer=743898,)
>>> out_string = template % d
>>> print(out_string)
My dog ate my homework.
This is a float: 7.74.
743898 is an integer on a newline.
¡Que agradable!
PreguntaMe gustaria aplicartemplate
aout_string
para producir un nuevodict
. Algo como,
>>> d_approx_copy = reverse_cstyle_template(out_string, template)
>>> print(d_approx_copy)
{pet='dog', object='homework', number=7.74, integer=743898,}
¿Hay alguna manera pitónica de hacer esto? ¿Ya existe una implementación? **
Notas*: No estoy usandoModelo porque, AFAIK, actualmente no admitenmarcha atrás.
**: Soy consciente de lariesgos asociado con la pérdida de precisión ennumber
(de7.7375487
a7.74
) Puedo lidiar con eso. Solo estoy buscando una manera simple de hacer esto.