Я не могу дать вам идеальное решение, но вы можете попробовать использовать string.Template
.
Вы либо предварительно обрабатываете свой входящий URL-адрес, а затем напрямую используете строку.
In [6]: url="http://api.app.com/{foo}"
In [7]: up=string.Template(re.sub("{", "${", url))
In [8]: up.substitute({"foo":"bar"})
Out[8]: 'http://api.app.com/bar'
использование стандартного синтаксиса "$ {...}" для идентификаторов замены. Или вы подкласс string.Template
для управления шаблоном идентификатора, как
class MyTemplate(string.Template):
delimiter = ...
pattern = ...
но я этого не понял.