Как я могу создать строки Python с заполнителями с произвольным количеством элементов - PullRequest
4 голосов
/ 12 августа 2010

Я могу сделать

string="%s"*3
print string %(var1,var2,var3)

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

if condition:
  add a new %s to string variable
  vars.append(newvar)

else:
  remove one %s from string
  vars.pop()
print string with placeholders

Есть идеи, как это сделать с помощью Python 2.6?

Ответы [ 3 ]

6 голосов
/ 12 августа 2010

Как насчет этого?

print ("%s" * len(vars)) % tuple(vars)

Действительно, это довольно глупый способ делать вещи.Если вы просто хотите объединить все переменные в одну большую строку, это, вероятно, будет лучшей идеей:

print ''.join(str(x) for x in vars)

Для работы требуется как минимум Python 2.4.

3 голосов
/ 12 августа 2010

используйте список для добавления / удаления строк, затем "" .join (yourlist) перед печатью

>>> q = []
>>> for x in range(3):
    q.append("%s")
>>> "".join(q)
'%s%s%s'
>>> print "".join(q) % ("a","b","c")
abc
1 голос
/ 12 августа 2010
n = 0
if condition:
  increment n
  vars.append(newvar)

else:
  decrement n
  vars.pop()

string = "%s" * n
print string with placeholders

Но вам не нужно форматировать строки, если вы просто присоединяетесь к переменным; почему бы не сделать:

"".join( map( str, vars ) )
...