Ответ 1
print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}
Я знаю, что это очень простой вопрос, но я понятия не имею, как это сделать.
как я могу сделать
print '<a href="%s">%s</a>' % (my_url)
Итак, что my_url
используется дважды? Я предполагаю, что мне нужно "называть" %s
, а затем использовать dict в параметрах, но я не уверен в правильном синтаксисе?
просто FYI, я знаю, что могу просто использовать my_url
дважды в параметрах, но это не точка:)
print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}
В 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 (последовательность, подобная списку или кортежу), а затем * 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))
Python 3.6 вводит строковое форматирование строки, так что вы можете отформатировать именованные параметры, не повторяя ни одного из ваших именованных параметров вне строки:
print(f'<a href="{my_url}">{my_url}</a>')
Для создания HTML-страниц вы хотите использовать механизм шаблонов, а не просто строку интерполяции.
Вы будете зависимы от синтаксиса.
Также С# 6.0 разработчики EcmaScript также знакомы с этим синтаксисом.
In [1]: print '{firstname} {lastname}'.format(firstname='Mehmet', lastname='Ağa')
Mehmet Ağa
In [2]: print '{firstname} {lastname}'.format(**dict(firstname='Mehmet', lastname='Ağa'))
Mehmet Ağa
Как и словарь, полезно знать следующий формат:
print '<a href="%s">%s</a>' % (my_url, my_url)
Здесь это немного избыточно, а способ словаря, конечно же, меньше подвержен ошибкам при модификации кода, но по-прежнему можно использовать кортежи для нескольких вставок. Первый %s
заменяется первым элементом в кортеже, второй %s
заменяется вторым элементом в кортеже и так далее для каждого элемента в кортеже.