Ich habe einige Daten, die ich im 3-Spalten-Format anzeige, in der Form:
key: value key: <tab> key: value <tab> key: value
.
Hier ist ein Beispiel:
p: 1 sl: 10 afy: 4
q: 12 lg: 10 kla: 3
r: 0 kl: 10 klw: 3
s: 67 vw: 9 jes: 3
t: 16 uw: 9 skw: 3
u: 47 ug: 9 mjl: 3
v: 37 mj: 8 lza: 3
w: 119 fv: 8 fxg: 3
x: 16 fl: 8 aew: 3
Ich würde jedoch gerne wissen, ob die Zahlen richtig ausgerichtet sind, wie zum Beispiel:
a: 1
b: 12
c: 123
Wie kann ich das in Python machen?
Hier ist der vorhandene Druckcode, den ich habe:
print(str(chr(i+ord('a'))) + ": " + str(singleArray[i]) + "\t" +
str(doubleArray[i][0]) + ": " + str(doubleArray[i][1]) + "\t" +
str(tripleArray[i][0]) + ": " + str(tripleArray[i][1]))
Verwenden Sie in Python 2.5 rjust (für Zeichenfolgen). Versuchen Sie auch, sich an Zeichenfolgenformatierung in python zu gewöhnen, anstatt nur zu verketten Einfaches Beispiel für die Formatierung von rechts und links:
width = 10
str_number = str(ord('a'))
print 'a%s' % (str_number.rjust(width))
In python 2.6+ (und dies ist die Standardmethode in 3) ist die "bevorzugte" Methode für die Formatierung von Zeichenfolgen die Verwendung von string.format () (die vollständigen Dokumente, für die gefunden werden können). hier ). richtige Begründung kann mit erfolgen
"a string {0:>5}".format(foo)
hierfür werden jedoch 5 Plätze benötigt
"a string {0:>{1}}".format(foo, width)
ist ebenfalls gültig und verwendet den an .format () übergebenen Wert width.
Verwenden Sie python Zeichenfolgenformatierung: '%widths'
wobei width eine ganze Zahl ist
>>> '%10s' % 10
' 10'
>>> '%10s' % 100000
' 100000'
In Python 3.6 können Sie Literal String Interpolation verwenden, was weniger ausführlich und wahrscheinlich intuitiver zu bedienen ist:
width = 5
number = 123
print (f'{number:>{width}}')
Oder nur:
number = 123
print (f'{number:>5}')
Es wird ein Großteil der str.format()
-Syntax wiederverwendet.
Ich vermute/hoffe, dass dies in Zukunft der bevorzugte Weg sein wird.
Wenn Sie eine Obergrenze für Ihre Zahlen kennen, können Sie mit "%<lenght>d" % n
Formatieren. Vorausgesetzt, all diese Berechnungen werden durchgeführt und in einer Liste von (char, num):
mapping = ((chr(i+ord('a')), singleArray[i]),
(doubleArray[i][0],doubleArray[i][1]),
(tripleArray[i][0],tripleArray[i][1])
)
for row in mapping:
print "%s: %3d" % row