Сторнирование строк формата C в стиле Python (`%`)
Введение и настройка
Предположим, у меня есть «шаблон» * строка вида,
>>> template = """My %(pet)s ate my %(object)s.
... This is a float: %(number)0.2f.
... %(integer)10d is an integer on a newline."""
С помощью этого шаблона я могу сгенерировать новую строку с
>>> 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.
Как мило!
ВопросЯ хотел бы подать заявкуtemplate
вout_string
производить новыйdict
, Что-то вроде,
>>> d_approx_copy = reverse_cstyle_template(out_string, template)
>>> print(d_approx_copy)
{pet='dog', object='homework', number=7.74, integer=743898,}
Есть ли Pythonic способ сделать это? Реализация уже существует? **
Заметки*: Я не пользуюсьшаблон потому что, AFAIK, они в настоящее время не поддерживаютреверсивный.
**: я знаю ориски связано с потерей точности вnumber
(от7.7375487
в7.74
). Я могу справиться с этим. Я просто ищу простой способ сделать это.