Formatering: Konvertering av tal till strängar
Att omvandla tal till text (strängar med siffror) kan göras på olika sätt. De två bästa sätten att konvertera värdet avx
till en sträng är att använda en f-sträng eller att anropa metoden format
i strängklassen.
f-strängar
Antag att vi har satt två variabler n
och x
till 12 respektive 2/3 dvs. ett värde av heltals- och ett av flyttalstyp.
Kod | Värde |
---|---|
f'{n}' | '12' |
f'n = {n}' | 'n = 12' |
f'{n} i kvadrat är {n*n}' | '12 i kvadrat är 144' |
f'{x}' | '0.6666666666666666' |
f'x i kvadrat är {x**2}' | 'x i kvadrat är 0.4444444444444444' |
I f-strängar kan man alltså skriva ett uttryck inom klammerparenteser. Dessa uttryck evalueras till ett värde som sedan konverteras till en sträng.
Det går att specificera detaljer som fältbredd och antal decimaler genom att skriva en formatkod.
Exempel med samma n
och x
som ovan men med formatkoder:
Kod | Värde | Kommentar |
---|---|---|
f'{n:6d}' | ' 12' | Heltal, 6 positioner, högerjusterat. |
f'{n:<6d}' | '12 ' | Heltal, 6 positioner, vänsterjusterat. |
f'{n:^6d}' | ' 12 ' | Heltal, 6 positioner, centrerat. |
f'{x:.3f}' | '0.667' | Flyttal, 3 decimaler. |
f'{x:10.4f}' | ' 0.6667' | Flyttal,4 decimaler, högerjusterat i 10 positioner. |
f'{x:.5e}' | '6.66667e-01' | Flyttal på exponentform, 5 decimaler. |
- Formatkoderna skrivs efter kolon inom klamrarna.
- Koden
d
anger heltal på decimal form. - Koden
f
anger flyttal på decimal form. - Koden
e
anger flyttal på exponentform. - Fältets bredd kan anges efter bokstavskoden.
- Positionering i fältet kan specificeras med
<
och^
. Högerjustering är default men kan också anges med>
. - För flyttal kan antal decimaler specificeras efter en punkt.
Metoden format
Samma exempel som med f-strängar ovan:
Kod | Värde |
---|---|
'{}'.format(n) | '12' |
'n = {}'.format(n) | 'n = 12' |
'{} i kvadrat är {}'.format(n, n*n) | '12 i kvadrat är 144' |
'{}'.format(x) | '0.6666666666666666' |
'{:6d}'.format(n) | ' 12' |
'{:<6d}'.format(n) | '12 ' |
'{:^6d}'.format(n) | ' 12 ' |
'{:.3f}'.format(x) | '0.667' |
'{:10.4f}'.format(x) | ' 0.6667' |
'{:.5e}'.format(x) | '6.66667e-01' |
format
-metoden.
Även här kan man ange formatkoder efter kolontecknet i platshållaren {}
.
Formatering med %
-operatorn
Exempel:
Kod | Värde |
---|---|
'n = %d, x = %5.2f' % (n, x) | 'n = 12, x = 0.67' |
Här skrivs formatkoderna efter %
inuti strängen.
Tecknet %
används också som operator
mellan en sträng och en tupel.
Detta är ett föråldrat sätt att göra formatkonverteringar, men man bör i alla fall förstå vad det är när man ser det.