How can I create python strings with placeholders with arbitrary number of elements
-
28-09-2019 - |
Question
I can do
string="%s"*3
print string %(var1,var2,var3)
but I can't get the vars into another variable so that I can create a list of vars on the fly with app logic. for example
if condition:
add a new %s to string variable
vars.append(newvar)
else:
remove one %s from string
vars.pop()
print string with placeholders
Any ideas on how to do this with python 2.6 ?
Solution
How about this?
print ("%s" * len(vars)) % tuple(vars)
Really though, that's a rather silly way to do things. If you just want to squish all the variables together in one big string, this is likely a better idea:
print ''.join(str(x) for x in vars)
That does require at least Python 2.4 to work.
OTHER TIPS
use a list to append/remove strings then "".join(yourlist) before printing
>>> q = []
>>> for x in range(3):
q.append("%s")
>>> "".join(q)
'%s%s%s'
>>> print "".join(q) % ("a","b","c")
abc
n = 0
if condition:
increment n
vars.append(newvar)
else:
decrement n
vars.pop()
string = "%s" * n
print string with placeholders
But you don't really need string formatting if you're just joining the vars; why not do:
"".join( map( str, vars ) )
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow