4

我可以

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 做到这一点的任何想法?

4

3 回答 3

6

这个怎么样?

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

但实际上,这是一种相当愚蠢的做事方式。如果您只想将所有变量压缩到一个大字符串中,这可能是一个更好的主意:

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

这确实需要至少 Python 2.4 才能工作。

于 2010-08-12T14:49:26.443 回答
3

在打印之前使用列表附加/删除字符串然后 "".join(yourlist)

>>> q = []
>>> for x in range(3):
    q.append("%s")
>>> "".join(q)
'%s%s%s'
>>> print "".join(q) % ("a","b","c")
abc
于 2010-08-12T14:49:42.877 回答
1
n = 0
if condition:
  increment n
  vars.append(newvar)

else:
  decrement n
  vars.pop()

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

但是,如果您只是加入 vars,则实际上并不需要字符串格式;为什么不这样做:

"".join( map( str, vars ) )
于 2010-08-12T14:49:39.523 回答