如何创建包含任意元素数占位符的python字符串

如何创建包含任意元素数占位符的python字符串,python,placeholder,Python,Placeholder,我能行 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 关于如何使用Pyth

我能行

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
关于如何使用Python2.6实现这一点,有什么想法吗

这个怎么样

print ("%s" * len(vars)) % tuple(vars)
但实际上,这是一种相当愚蠢的做事方式。如果您只想将所有变量挤在一个大字符串中,那么这可能是一个更好的主意:

print ''.join(str(x) for x in vars)
这至少需要Python2.4才能工作

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

使用列表附加/删除字符串,然后在打印前加入(您的列表)

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

这似乎太复杂了。为什么要构建一个大的格式字符串和一个大的值列表?为什么不将格式应用于值并将其附加到结果中?请展示更多你认为你需要的背景。听起来一切都可以简化。我不完全确定你想在这里完成什么,但我会尝试一个答案。绝对同意-不要这样做!但是,如果出于某种原因,您真的希望能够从字符串中删除格式(呃!),那么这似乎是最简单的方法。如果可能,最好避免这种情况。