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

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

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

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

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


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

6 Solutions collect form web for “Строковое форматирование названных параметров?”

 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 (a dict если вы знаете, что хорошо для вас). Точки интерполяции определяются сначала, подставляя именованные значения на свои метки, а затем позиционные из того, что осталось. Итак, вы также можете это сделать …

 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+

Python 3.6 вводит строковое форматирование строк , так что вы можете отформатировать именованные параметры без повторения любых ваших именованных параметров за пределами строки:

 print(f'<a href="{my_url}">{my_url}</a>') 

См. Строковое форматирование строк, PEP 498

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

Вы будете зависимы от синтаксиса.

Кроме того, C # 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 заменяет второй элемент в кортеже и т. Д. Для каждого элемента в кортеже.

Python - лучший язык программирования в мире.