Я знаю, что это действительно простой вопрос, но я не знаю, как его погуглить.
Как я могу сделать
print '<a href="%s">%s</a>' % (my_url)
, чтобы my_url
использовался дважды? Я предполагаю, что должен «назвать» %s
и затем использовать dict в параметрах, но я не уверен в правильном синтаксисе?
просто к сведению, я знаю, что могу просто используйте my_url
дважды в параметрах, но это не главное:)
print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}
Помимо словарного метода, может быть полезно знать следующий формат:
print '% s '% (my_url, my_url)
Здесь это немного избыточно, и словарный способ, безусловно, менее подвержен ошибкам при изменении кода, но все же можно использовать кортежи для множественных вставок. Первый % s
заменяется первым элементом в кортеже, второй % s
заменяется вторым элементом в кортеже, и так далее для каждого элемента в кортеже.
Для создания HTML-страниц вы хотите использовать механизм шаблонов, а не простую интерполяцию строк.
В Python 2.6+ и Python 3 вы можете использовать более новый метод форматирования строк.
print('<a href="{0}">{0}</a>'.format(my_url))
что избавляет вас от повторения аргумента, или
print('<a href="{url}">{url}</a>'.format(url=my_url))
если вам нужны именованные параметры.
print('<a href="{}">{}</a>'.format(my_url, my_url))
который является строго позиционным, и только с оговоркой, что аргументы format() следуют правилам Python, где сначала должны идти неименованные аргументы, затем именованные аргументы, затем *args (последовательность типа list или tuple) и затем *kwargs (диктант с ключами строк, если вы знаете, что для вас хорошо). Точки интерполяции определяются сначала путем подстановки именованных значений в их метки, а затем позиционно из того, что осталось. Таким образом, вы также можете сделать это...
print('<a href="{not_my_url}">{}</a>'.format(my_url, my_url, not_my_url=her_url))
Но не это...
print('<a href="{not_my_url}">{}</a>'.format(my_url, not_my_url=her_url, my_url))