Formattering med str.format()
Man kan med hjälp av str.format() formatera strängar.
- %d används i samband med heltal, där d står för digit. Se exemplet nedan:
a = 5711
print( "START{0:<9d}SLUT".format( a ) )
skriver ut: START5711␣␣␣␣␣SLUT
medan
print("START{0:>10d}SLUT".format(a))
skriver ut: START␣␣␣␣␣5711SLUT
Alltså det ska skrivas ut minst 9 tecken. Om antal tecken i talet är mindre än 9 då ska resterande fyllas med mellanrum (␣) för att uppnå 9 tecken. I detta fall 5 mellanrum då talet endast består av 4 tecken. < och > talar om ␣ ska vara före 5711 eller efter. talet 0 i {0:<9d} syftar på första argument i parameterlistan för format. t.ex om vi har följande kod :
a = 5711
b = 3243
print( "START{1:<9d}SLUT".format(a, b) )
då skrivs ut: START3243␣␣␣␣␣SLUT
eftersom att 1 i {1:<9d} syftar på argument med index 1 d.v.s. b och alltså inte a som har index 0 i argumentlistan..
- %f används i samband med decimaltal, där f står för float. Se exemplet nedan:
a = 4711.589
print("START{0:<9.1f}SLUT".format(a))
programmet skriver ut: START4711.6␣␣␣SLUT
Alltså minst ska det vara 9 tecken mellan "START" och "SLUT". Talet 1 i {0:<9.1f} avrundar decimaltalet med 1 decmal, alltså 4711.589 avrundas till 4711.6, vilket består av 6 tecken. Alltså resterande 3 (9-6=3) ska fyllas upp med mellanrum (␣).
- %s används i samband med strängar, där s står för string. Se exemplet nedan:
a = "blahonga"
print("START{0:<11.4s}SLUT".format(a))
programmet skriver ut: STARTblah␣␣␣␣␣␣␣SLUT
Talet 4 i {0:<11.4s} bestämmer antal tecken från strängen som ska skrivas ut, alltså 4 tecknen "blah" i detta fall. Talet 11 i {0:<11.4s} bestämmer totala antal tecken som ska skrivas ut, varav 7 mellanrum (␣).
Man kan också kombinera %s, %f och %d i en enda sats.
a = 77
b = 45.112345
c = "två tal och en strang"
print("{2:<11.6s}{0:<d}{1:<6.2f}***".format(a,b,c))
Vilket skriver ut:
två ta␣␣␣␣␣7745.11␣***
Vad har tecknet "<" för betydelse?
Tecknet "<" talar om att det som ska formatteras ska hamna på vänstra sidan och om det hade stått ">" det skulle innebära att det som ska formatteras ska hamna på högra sidan:
Vi såg att:
a = "blahonga"
print("START{0:<11.4s}SLUT".format(a))
skriver ut: STARTblah␣␣␣␣␣␣␣SLUT
Om vi nu byter "<" till ">" enligt nedan då får vi följande:
a = "blahonga"
print("START{0:>11.4s}SLUT".format(a))
skriver ut: START␣␣␣␣␣␣␣blahSLUT