Um einen Header für tabellarische Daten zu drucken, Ich mag würde nur ein Format-String line
und eine Spezifikation für Spaltenbreiten w1, w2, w3
zu verwenden (oder sogar w = x, y, z
, wenn möglich.)Variablen für Breite in Python Format-String
Ich habe mir this angesehen, aber tabulate
etc. Lassen Sie mich nicht Dinge in der Spalte wie format
rechtfertigen.
Dieser Ansatz funktioniert:
head = 'eggs', 'bacon', 'spam'
w1, w2, w3 = 8, 7, 10 # column widths
line = ' {:{ul}>{w1}} {:{ul}>{w2}} {:{ul}>{w3}}'
under = 3 * '='
print line.format(*head, ul='', w1=w1, w2=w2, w3=w3)
print line.format(*under, ul='=', w1=w1, w2=w2, w3=w3)
Muss ich einzelne Namen als Breiten {w1}
, {w2}
, ... im Format-String? Versuche wie {w[1]}
, {w[2]}
ergeben entweder KeyError
oder keyword can't be an expression
.
Auch ich denke, die w1=w1, w2=w2, w3=w3
ist nicht sehr prägnant. Gibt es einen besseren Weg?
Warum benutzen Sie kein Wörterbuch - 'w = {'w1': 8, 'w2': 7, 'w3': 10}' dann rufen Sie 'line.format (..., ** w)'. Sie könnten sogar das Wörterbuch dynamisch aus '[8, 7, 10]' - 'w = {'w {}' erstellen format (index): Wert für Index, Wert in enumerate ([8, 7, 10], 1)} '. – jonrsharpe
@jonrsharpe Danke! Ich gebe zu, ich musste deinen automatischen Diktator ein wenig studieren, bevor ich es verstand. Siehe auch unten .. – RolfBly