Ссылаться на один и тот же ввод несколько раз при замене строки?

#python #string

#python #строка

Вопрос:

Мне нужно напечатать что-то вроде этого

 "a=name1,b=name2,c=name1,d=name2"
  

Пока у меня есть name1 и name2 в переменной n1 n2

 n1="name1"
n2="name2"
  

что я пытаюсь сделать

 "a=%s,b=%s,c=%s,d=%s" % (n1,n2,n1,n2)
  

Есть ли способ лучше этого? способ избежать n1, n2, n1, n2?

с python 3?

а что, если

 print sys.version_info
(2, 1, 0, 'final', 0) 
  

Комментарии:

1. Что, если что? Эта последняя часть не имеет для меня особого смысла.

Ответ №1:

 "a=%(name1)s,b=%(name2)s,c=%(name1)s,d=%(name2)s" % {'name1': n1, 'name2': n2}
  

Комментарии:

1. Это хорошо, есть ли что-нибудь, использующее Format amp; Template?

Ответ №2:

Пока кортеж просто дублируется, вы можете упростить, используя умножение кортежей, в противном случае используйте интерполяцию по словарю, показанную в другом ответе, или используйте string.format .

 (n1, n2, n1, n2) == (n1, n2) * 2
  

Пример использования format :

 "a={0}, b={1}, c={0}, d={1}".format(name1, name2)
  

В качестве альтернативы вы могли бы использовать string.replace :

 "a=n1, b=n2, c=n1, d=n2".replace('n1', name1).replace('n2', name2)
  

Но это, мягко говоря, подвержено ошибкам.

Комментарии:

1. извините, он не повторяется ни в каком порядке, это абзац с именем 1, имя 2 повторяется повсюду. Для краткости я использовал этот пример.

2. тогда нет лучшего способа, чем словарный подход, извините.