2010-07-14 9 views
3

J'ai quelque chose comme: print "\n","|",id,"|",var1,"|",var2,"|",var3,"|",var4,"|"Comment imprimer une chaîne de variables sans espaces en Python

Il imprime avec des espaces pour chaque variable.

| 1 | john | h | johnny | mba | 

Je veux quelque chose comme ceci:

|1|john|h|johnny|mba| 

je 20 variables que je dois imprimer et je déteste utiliser sys.stdout.write (var) pour chacun d'entre eux. Merci Pythonistas!

Répondre

6

Essayez d'utiliser join:

print "\n"+'|'.join([id,var1,var2,var3,var4]) 

ou si les variables ne sont pas déjà des chaînes:

print "\n"+'|'.join(map(str,[id,var1,var2,var3,var4])) 

L'avantage de cette approche est que vous ne devez pas construire une longue chaîne de format et il fonctionne fondamentalement inchangé pour un nombre arbitraire de variables.

5
print "\n|%s|%s|%s|%s" % (id,var1,var2,var3,var4) 

Jetez un coup d'œil à String Formatting.

Éditer: Les autres réponses avec jointure sont meilleures. La jointure attend des chaînes.

+1

'% s' fonctionne avec n'importe quel objet, pas seulement avec des chaînes -' "% s +% s"% (1, 2) == "1 + 2" '. Vous n'avez pas besoin d'utiliser '% d' sauf si vous voulez que le code lève une exception pour une entrée non numérique. –

+0

Fixé. Je vous remercie. – user389875

+0

Bien sûr,% s ne donne pas de résultats très utiles à moins que '__str__' ou' __repr__' ne soient implémentés –

7

Pour un certain nombre de valeurs variables:

print '|%s|' % '|'.join(str(x) for x in [id, var1, var2, var3, var4]) 
+0

print '|% s |' % '|' .join (map (str, [id, var1, var2, var3, var4])) est plus beau (si vous avez un très gros tableau, vous pouvez utiliser imap à la place). –

+0

@Tomasz: Vous le pensez? Je pensais que les pythonistes considèrent normalement le générateur plus clair ... –

+0

Vous avez peut-être raison. Mais dans cette approche, la carte semble inutile. –

2

Si vous utilisez Python 2.6 ou plus récent, utilisez la nouvelle norme pour la chaîne de formattage, la méthode str.format:

print "\n{0}|{1}|{2}|".format(id,var1,var2) 

link text

+1

Et si vous avez Python 2.7 ou plus récent, vous pouvez même supprimer les nombres: '" \ n {} | {} | {} | ".format (id, var1, var2)' –