#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. тогда нет лучшего способа, чем словарный подход, извините.