Comment puis-je créer des chaînes de python avec des espaces réservés avec un nombre arbitraire d'éléments

StackOverflow https://stackoverflow.com/questions/3468916

  •  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?

Était-ce utile?

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 ) )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top