如何使用具有任意数量元素的占位符创建python字符串

时间:2010-08-12 14:44:28

标签: python placeholder

我能做到

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

但我无法将vars转换为另一个变量,因此我可以使用app逻辑动态创建变量列表。 例如

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 个答案:

答案 0 :(得分:6)

这个怎么样?

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

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

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

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

答案 1 :(得分:3)

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

>>> q = []
>>> for x in range(3):
    q.append("%s")
>>> "".join(q)
'%s%s%s'
>>> print "".join(q) % ("a","b","c")
abc

答案 2 :(得分:1)

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 ) )