Je veux juste des colonnes de texte de largeur fixe mais les chaînes sont toutes capitées à droite, au lieu de gauche !!?
sys.stdout.write("%6s %50s %25s\n" % (code, name, industry))
produit
BGA BEGA CHEESE LIMITED Food Beverage & Tobacco
BHP BHP BILLITON LIMITED Materials
BGL BIGAIR GROUP LIMITED Telecommunication Services
BGG BLACKGOLD INTERNATIONAL HOLDINGS LIMITED Energy
mais nous voulons
BGA BEGA CHEESE LIMITED Food Beverage & Tobacco
BHP BHP BILLITON LIMITED Materials
BGL BIGAIR GROUP LIMITED Telecommunication Services
BGG BLACKGOLD INTERNATIONAL HOLDINGS LIMITED Energy
Vous pouvez préfixer l'exigence de taille avec -
pour justifier à gauche:
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
Cette version utilise la méthode str.format .
Python 2.7 et plus récent
sys.stdout.write("{:<7}{:<51}{:<25}\n".format(code, name, industry))
Version Python 2.6
sys.stdout.write("{0:<7}{1:<51}{2:<25}\n".format(code, name, industry))
[~ # ~] met à jour [~ # ~]
Auparavant, la documentation indiquait que l'opérateur% serait supprimé de la langue à l'avenir. Cette déclaration a été retirée de la documentation .
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
sur une note, vous pouvez modifier la largeur avec *-s
>>> d = "%-*s%-*s"%(25,"Apple",30,"something")
>>> d
'Apple something '
Utilisation -50%
au lieu de +50%
Ils seront alignés à gauche ..
Celui-ci a fonctionné dans mon python script:
print "\t%-5s %-10s %-10s %-10s %-10s %-10s %-20s" % (thread[0],thread[1],thread[2],thread[3],thread[4],thread[5],thread[6])
Avec le nouveau et populaire f-strings in Python 3.6, voici comment nous alignons à gauche une chaîne de 16 longueurs de remplissage:
str = "Stack Overflow"
print(f"{str:<16}..")
Stack Overflow ..
Si vous avez une longueur de remplissage variable:
k = 20
print(f"{str:<{k}}..")
Stack Overflow ..
f-strings sont plus lisibles.
Une solution alternative légèrement plus lisible:sys.stdout.write(code.ljust(5) + name.ljust(20) + industry)
Notez que ljust(#ofchars)
utilise des caractères de largeur fixe et ne s'ajuste pas dynamiquement comme les autres solutions.