2 votes

Alignement de la chaîne d'impression Python

Je suis en train d'imprimer certaines valeurs dans une boucle en Python. Ma sortie actuelle est la suivante :

0  Data Count:  249   7348   249   4469   2768   261   20   126
1  Data Count:  288   11   288   48     2284   598   137      408 
2  Data Count:  808   999   808   2896   32739   138   202   678
3  Data Count:  140   26   140   2688   8054   884   433      987

Ce que j'aimerais, c'est que toutes les valeurs de chaque colonne soient alignées, même si le nombre de caractères ou de chiffres diffère pour certaines, afin de faciliter la lecture.

Le pseudo-code derrière cela est le suivant :

for i in range(0,3): 

    print i, " Data Count: ", Count_A, " ", Count_B, " ", Count_C, " ", Count_D, " ", Count_E, " ", Count_F, " ", Count_G, " ", Count_H

Merci d'avance à tous !

5voto

Andrew G.H. Points 1009

Vous pourriez utiliser la justification par chaîne de format :

from random import randint

for i in range(5):
    data = [randint(0, 1000) for j in range(5)]
    print("{:5} {:5} {:5} {:5}".format(*data))

sortie :

   92   460    72   630
  837   214   118   677
  906   328   102   320
  895   998   177   922
  651   742   215   938

Selon le spécification du format à partir des documents Python

0voto

ivan_pozdeev Points 2233

Avec le % opérateur de formatage des chaînes de caractères la largeur minimale de la sortie est spécifiée dans un espace réservé sous la forme d'un nombre avant le type de données ( le format complet d'un placeholder est %[key][flags][width][.precision][length type]conversion type ). Si le résultat est plus court, il sera ajouté à gauche pour atteindre la longueur spécifiée :

from random import randint

for i in range(5):
    data = [randint(0, 1000) for j in range(5)]
    print("%5d %5d %5d %5d %5d" % tuple(data))

donne :

  946   937   544   636   871
  232   860   704   877   716
  868   849   851   488   739
  419   381   695   909   518
  570   756   467   351   537

(code adapté de <a href="https://stackoverflow.com/questions/53802256/python-print-string-alignment/53802345#53802345">Réponse de @andreihondrari </a>)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X