Ссылаться на один и тот же ввод несколько раз при замене строки? - PullRequest
2 голосов
/ 14 апреля 2011

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

"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?

с питоном 3?

а что если

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

Ответы [ 2 ]

7 голосов
/ 14 апреля 2011
"a=%(name1)s,b=%(name2)s,c=%(name1)s,d=%(name2)s" % {'name1': n1, 'name2': n2}
0 голосов
/ 14 апреля 2011

Пока кортеж просто дублируется, вы можете упростить его, используя умножение кортежа, в противном случае используйте интерполяцию словаря, показанную в другом ответе, или используйте 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)

Но это подвержено ошибкам, если не сказать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...