Форматирование строки с кавычками - PullRequest
0 голосов
/ 25 января 2020

Скажем, у меня есть список

list = ['a', 'b', 'c']

И я хочу создать следующие строки:

foo_a = bar['a']
foo_b = bar['b']
foo_c = bar['c']

Я пробовал следующее:

for i in list:
    print("foo_{} = bar['{{}}']".format(i))

Но вывод

foo_a = bar['{}']
foo_b = bar['{}']
foo_c = bar['{}']

Я прочитал Почему используется python Обтекание F-строки интерполяцией с кавычками? , но второй метод, похоже, больше не работает.

Ответы [ 2 ]

3 голосов
/ 25 января 2020

У вас есть два {} заполнителя, но только одна переменная. Поэтому вы должны сообщить тем заполнителям, что им нужно использовать один и тот же. Также по какой-то причине вы используете двойные скобки во втором заполнителе. Это используется для «экранирования» скобок, поэтому {{}} станет {} (и не будет фактически заполнителем).

Итак, после устранения этих двух проблем:

>>> list = ['a', 'b', 'c']
>>> for i in list:
        print("foo_{i} = bar['{i}']".format(i=i))
     #  print("foo_{0} = bar['{0}']".format(i))

foo_a = bar['a']
foo_b = bar['b']
foo_c = bar['c']

Или с f-strings (для Python >= 3.6):

for i in list:
    print(f"foo_{i} = bar['{i}']")

Чтобы лучше понять использование заполнителей, читайте больше на PyFormat , в частности, Basi c Форматирование для информации о позиционных заполнителях и Именованные заполнители для - хорошо названных заполнителей.

0 голосов
/ 25 января 2020

Попробуйте это. Вам не хватает нескольких вещей.

list = ['a', 'b', 'c']
for i in list:
    print("foo_{} = bar[\'{}\']".format(i, i))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...