2013-09-30 9 views
10

Ich versuche, die Zeichenfolge so zu formatieren, alles zwischen den beiden Zeilen.Python String-Formatierung Spalten in Zeile

APPLES       $.99       214      
kiwi        $1.09       755 

ich dies versuchen, indem Sie:

fmt = ('{0:30}{1:30}{2:30}'.format(Fruit,price,qty)) 

Wie würde ich eine Spalte aufstehen Linie? Ich lese die Dokumente, aber ich bin verwirrt. Ich dachte, dass die {1:30} es 30 Leerzeichen machen würde, dann würde es das nächste Element drucken, aber es scheint, dass es 30 Leerzeichen von dem Ende des vorherigen Elements ist.

Dank

Antwort

26

str.format() Ihre Felder links in den verfügbaren Raum ausgerichtet ist, zu machen. alignment specifiers verwenden, um die Ausrichtung zu ändern:

'<' Bewirkt das Feld innerhalb des verfügbaren Raumes linksbündig ausgerichtet werden (dies ist die Standardeinstellung für die meisten Objekte).

'>' Erzwingt, dass das Feld innerhalb des verfügbaren Bereichs rechtsbündig ausgerichtet ist (dies ist die Standardeinstellung für Zahlen).

'=' Erzwingt, dass das Padding nach dem Zeichen (falls vorhanden), aber vor den Ziffern platziert wird. Dies wird zum Drucken der Felder in der Form '+000000120' verwendet. Diese Ausrichtungsoption ist nur für numerische Typen gültig.

'^' Erzwingt, dass das Feld innerhalb des verfügbaren Raums zentriert wird.

Hier ist ein Beispiel (mit links und rechts Ausrichtungen):

>>> for args in (('apple', '$1.09', '80'), ('truffle', '$58.01', '2')): 
...  print '{0:<10} {1:>8} {2:>8}'.format(*args) 
... 
apple   $1.09  80 
truffle  $58.01  2 
+0

Was passiert, wenn zum Beispiel 1.09 ist ein Wert, der von irgendwo berechnet worden ist, aber es ist im Format 1,0934433432 (zB hohe Präzision) - Und ich möchte es nur auf 2 Dezimalstellen runden (= 1,09). Was soll ich tun? –

+0

Sie können die [Genauigkeit] (https://docs.python.org/2/library/string.html#grammar-token-precision) angeben. Für weitere Informationen siehe [diese Antwort] (http://stackoverflow.com/a/8940627/1322401) zu * Wie kann ich eine Dezimalzahl formatieren, um immer 2 Dezimalstellen anzuzeigen? *. –