Строка форматирования именованных параметров?

Я знаю, что это действительно простой вопрос, но я не знаю, как его погуглить.

Как я могу сделать

print '<a href="%s">%s</a>' % (my_url)

, чтобы my_url использовался дважды? Я предполагаю, что должен «назвать» %s и затем использовать dict в параметрах, но я не уверен в правильном синтаксисе?


просто к сведению, я знаю, что могу просто используйте my_url дважды в параметрах, но это не главное:)

128
задан Ben Blank 16 March 2010 в 06:05
поделиться

4 ответа

print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}
215
ответ дан 24 November 2019 в 00:35
поделиться

Помимо словарного метода, может быть полезно знать следующий формат:

print '% s '% (my_url, my_url)

Здесь это немного избыточно, и словарный способ, безусловно, менее подвержен ошибкам при изменении кода, но все же можно использовать кортежи для множественных вставок. Первый % s заменяется первым элементом в кортеже, второй % s заменяется вторым элементом в кортеже, и так далее для каждого элемента в кортеже.

2
ответ дан 24 November 2019 в 00:35
поделиться

Для создания HTML-страниц вы хотите использовать механизм шаблонов, а не простую интерполяцию строк.

5
ответ дан 24 November 2019 в 00:35
поделиться

В 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))
69
ответ дан 24 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: