2009-08-31 4 views

Antwort

18

Wenn Sie die maximale Länge der Daten in den zwei Spalten kennen, können Sie Formatqualifizierer verwenden. Zum Beispiel, wenn der Name ist höchstens 20 Zeichen lang sein und der Preis wird in 10 Zeichen passen, könnten Sie

print "Name: %-20s Price: %10d" % (i.name, i.price) 

Das ist besser als die Verwendung von Tabs als Registerkarten unter bestimmten Umständen nicht in eine Reihe aufstellen (zB wenn ein Name ist ein bisschen länger als ein anderer).

Wenn einige Namen nicht in den nutzbaren Platz passen, können Sie die Daten mit dem Formatqualifikator . abschneiden. Wenn Sie beispielsweise "% -20.20s" für das Namensformat verwenden, werden alle längeren Namen abgeschnitten, damit sie in die 20-Zeichen-Spalte passen.

+0

Ausgezeichnet. Eine weitere Erinnerung für mich an eine Funktion, die ich selten in Python verwende. Hatte dieses Problem selbst früher und reparierte es mit Tabs. Jetzt kann ich zurückgehen und meinen Code leichter lesbar machen. –

9

Wie Vinay sagte, verwenden Sie Stringformatbezeichner.

Wenn Sie nicht die maximalen Längen kennen, können Sie sie, indem sie einen zusätzlichen Durchlauf durch die Liste:

maxn, maxp = 0, 0 
for item in items: 
    maxn = max(maxn, len(item.name)) 
    maxp = max(maxp, len(str(item.price))) 

'*' dann statt der Nummer verwenden und die berechnete Breite als Argument liefern.

0

Sie können auch die rjust()/ljust() -Methoden für str-Objekte verwenden.

Verwandte Themen