Подтвердить что ты не робот

Форматирование строки Python: несколько ссылок на один аргумент

Если у меня есть строка вроде:

"{0} {1} {1}" % ("foo", "bar")

и я хочу:

"foo bar bar"

Что должны делать токены замены? (Я знаю, что мой пример выше неверен, я просто пытаюсь выразить свою цель.)

4b9b3361

Ответ 1

"{0} {1} {1}".format("foo", "bar")

Ответ 2

"%(foo)s %(foo)s %(bar)s" % { "foo" : "foo", "bar":"bar"}

- еще один истинный, но длинный ответ. Просто чтобы показать вам другую точку зрения по этой проблеме;)

Ответ 3

Python 3 имеет именно этот синтаксис, за исключением того, что оператор % теперь является format. str.format также добавлен в Python 2.6+, чтобы сгладить переход на Python 3. Подробнее см. форматирование строкового формата.

>>> '{0} {1} {1}' % ('foo', 'bar')
'foo bar bar'

Это не может быть сделано с кортежем в старых версиях Python. Вы можете приблизиться, используя клавиши сопоставления, заключенные в круглые скобки. С помощью клавиш сопоставления значения формата должны передаваться в виде dict вместо кортежа.

>>> '%(0)s %(1)s %(1)s' % {'0': 'foo', '1': 'bar'}
'foo bar bar'

Из руководства Python:

Если правильным аргументом является словарь (или другой тип сопоставления), то форматы в строке должны включать ключ сопоставления в скобки в словарь, вставленный сразу после символа "%". Ключ сопоставления выбирает значение, которое должно быть отформатировано из отображения.