шаблон в питоне - PullRequest
       13

шаблон в питоне

7 голосов
/ 22 марта 2011

Как написать функцию render_user, которая принимает один из кортежей, возвращаемых списком пользователей и строковым шаблоном, и возвращает данные, подставленные в шаблон, например:

>>> tpl = "<a href='mailto:%s'>%s</a>"
>>> render_user(('matt.rez@where.com', 'matt rez', ), tpl)
"<a href='mailto:matt.rez@where.com>Matt rez</a>"

Любая помощь будет оценена

Ответы [ 2 ]

10 голосов
/ 22 марта 2011

Не нужно срочно создавать функцию, если она вам не нужна:

>>> tpl = "<a href='mailto:%s'>%s</a>"
>>> s = tpl % ('matt.rez@where.com', 'matt rez', )

>>> print s
"<a href='mailto:matt.rez@where.com'>matt rez</a>"

Если вы используете версию 2.6+, вы также можете использовать новую функцию format вместе с ее мини-языком.:

>>> tpl = "<a href='mailto:{0}'>{1}</a>"
>>> s = tpl.format('matt.rez@where.com', 'matt rez')

>>> print s
"<a href='mailto:matt.rez@where.com'>matt rez</a>"

Завернут в функцию:

def render_user(userinfo, template="<a href='mailto:{0}'>{1}</a>"):
    """ Renders a HTML link for a given ``userinfo`` tuple;
        tuple contains (email, name) """
    return template.format(userinfo)

# Usage:

userinfo = ('matt.rez@where.com', 'matt rez')

print render_user(userinfo)
# same output as above

Дополнительный кредит:

Вместо использования обычного tuple объекта попробуйте использовать более надежный и удобный для человекаnamedtuple предоставляется модулем collections.Он имеет те же характеристики производительности (и потребление памяти), что и обычный tuple.Краткое введение в именованные кортежи можно найти в этом видео PyCon 2011 (перемотка вперед до ~ 12 м): http://blip.tv/file/4883247

4 голосов
/ 01 марта 2012
from string import Template
t = Template("${my} + ${your} = 10")
print(t.substitute({"my": 4, "your": 6}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...