Comment puis-je créer des chaînes de python avec des espaces réservés avec un nombre arbitraire d'éléments
-
28-09-2019 - |
Question
Je peux faire
string="%s"*3
print string %(var1,var2,var3)
mais je ne peux pas obtenir le vars dans une autre variable afin que je puisse créer une liste de vars à la volée avec la logique de l'application. par exemple
if condition:
add a new %s to string variable
vars.append(newvar)
else:
remove one %s from string
vars.pop()
print string with placeholders
Toutes les idées sur la façon de le faire avec Python 2.6?
La solution
Comment cela?
print ("%s" * len(vars)) % tuple(vars)
Vraiment bien, qui est une façon plutôt stupide de faire des choses. Si vous voulez juste écraser toutes les variables ensemble dans une grande chaîne, cela est probablement une meilleure idée:
print ''.join(str(x) for x in vars)
Cela ne nécessite au moins Python 2.4 au travail.
Autres conseils
utiliser une liste pour ajouter / suppression de chaînes puis "" .join (yourlist) avant l'impression
>>> 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
Mais vous ne chaîne vraiment pas besoin d'être formaté si vous êtes juste de rejoindre le vars; pourquoi ne pas faire:
"".join( map( str, vars ) )