Шаблон строки Python - PullRequest
       8

Шаблон строки Python

3 голосов
/ 02 августа 2009

Я использую этот веб-сервис REST, который возвращает различные шаблонные строки в виде URL, например:

"http://api.app.com/{foo}"

В Ruby я могу использовать

url = Addressable::Template.new("http://api.app.com/{foo}").expand('foo' => 'bar')

чтобы получить

"http://api.app.com/bar"

Есть ли способ сделать это в Python? Я знаю о шаблонах% (), но, очевидно, они здесь не работают.

Ответы [ 3 ]

4 голосов
/ 02 августа 2009

В Python 2.6 вы можете сделать это, если вам нужен именно этот синтаксис

from string import Formatter
f = Formatter()
f.format("http://api.app.com/{foo}", foo="bar")

Если вам нужно использовать более раннюю версию Python, вы можете скопировать класс форматера 2.6 или вручную выполнить анализатор / регулярное выражение, чтобы сделать это.

2 голосов
/ 03 августа 2009

Не используйте быстрый взлом.

Здесь используются (и реализуются Addressable) URI Templates . Кажется, в python есть несколько библиотек для этого, например: uri-templates . description_routes_py также имеет парсер для них.

0 голосов
/ 02 августа 2009

Я не могу дать вам идеальное решение, но вы можете попробовать использовать 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   = ...

но я этого не понял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...