Inverter seqüências de formato no estilo C em Python (`%`)

Introdução e configuração

Suponha que eu tenha uma 'template' * string do formulário,

>>> template = """My %(pet)s ate my %(object)s.
... This is a float: %(number)0.2f.
... %(integer)10d is an integer on a newline."""

Com este modelo, posso gerar uma nova string com,

>>> 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 bom!

Pergunta, questão

Eu gostaria de aplicartemplate paraout_string para produzir um novodict. Algo como,

>>> d_approx_copy = reverse_cstyle_template(out_string, template)
>>> print(d_approx_copy)
{pet='dog', object='homework', number=7.74, integer=743898,}

Existe uma maneira pitônica de fazer isso? Já existe uma implementação? **

Notas

*: Eu não estou usandoModelo porque, atualmente, o AFAIK não oferece suporterevertendo.

**: conheço oriscos associado à perda de precisão emnumber (por7.7375487 para7.74) Eu posso lidar com isso. Estou apenas procurando uma maneira simples de fazer isso.

questionAnswers(1)

yourAnswerToTheQuestion