Я s
создаю строку в Python 2.6.5, которая будет иметь различное количество %s
токенов, которые соответствуют количеству записей в списке x
. Мне нужно написать форматированную строку. Следующее не работает, но указывает на то, что я пытаюсь сделать. В этом примере есть три %s
токена, а в списке три записи.
s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)
Я бы хотел, чтобы строка вывода была:
1 BLAH 2 FOO 3 BAR
python
string
list
formatting
string-formatting
SabreWolfy
источник
источник
(x)
то же самое, что иx
. Помещение одного токена в скобки не имеет смысла в Python. Обычно вы вставляете скобки,foo = (bar, )
чтобы было легче читать, но делаете тоfoo = bar,
же самое.print s % (x)
это то, что написал OP, я просто цитировал его / ее.foo = (bar, )
:)(x)
обозначения для ясности; это также позволяет избежать того, чтобы забыть о скобках, если вы позже добавите дополнительные переменные.Вам следует взглянуть на метод форматирования python. Затем вы можете определить свою строку форматирования следующим образом:
источник
%
оператор только распаковывает кортежи.s
усложнило бы построение , так как мне нужно было бы включать увеличивающиеся числа, а не просто%s
для каждой позиции.s
создается в несколько этапов, поэтому намного проще просто включить%s
токен.print u'%(blah)d BLAHS %(foo)d FOOS …' % {'blah': 15, 'foo': 4}
.s = '{} BLAH {} BLAH BLAH {} BLAH BLAH BLAH'
Следуя этой странице ресурсов , если длина x меняется, мы можем использовать:
для создания заполнителя для каждого элемента из списка
x
. Вот пример:источник
Вот один лайнер. Небольшой импровизированный ответ с использованием формата с print () для перебора списка.
Как насчет этого (python 3.x):
Прочтите здесь документацию по использованию format () .
источник
Поскольку я только что узнал об этой классной штуке (индексация списков из строки формата), я добавляю к этому старому вопросу.
Вывод:
Однако я до сих пор не понял, как сделать нарезку (внутри строки формата
'"{x[2:4]}".format...
), и хотел бы понять это, если у кого-то есть идея, однако я подозреваю, что вы просто не можете этого сделать.источник
Это был забавный вопрос! Другой способ справиться с этим для списков переменной длины - создать функцию, которая полностью использует преимущества
.format
метода и распаковки списка. В следующем примере я не использую необычное форматирование, но его можно легко изменить в соответствии с вашими потребностями.источник
То же, что и ответ @neobot, но немного более современный и лаконичный.
источник
На выходе
источник