web-dev-qa-db-fra.com

Comment aligner à gauche une chaîne de largeur fixe?

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
56
John Mee

Vous pouvez préfixer l'exigence de taille avec - pour justifier à gauche:

sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
104
Matthew Trevor

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 .

41
Marwan Alsabbagh
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                     '
26
Joran Beasley

Utilisation -50% au lieu de +50% Ils seront alignés à gauche ..

9
Rohit Jain

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])
4
codeRunner89

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.

4
Ketan

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.

3
Nick Sweeting