Start | format
 

format



Format är en metod för att formatera textsträngar.

Substitution av variabler

txt = "Jag heter {fname} och är {age} år".format(fname = "Emma", age = 18) print(txt)
txt = "Jag heter {0}, {0} alltså, och är {1} år. {0} {1} år.".format("Emma", 18) print(txt)

Vänster eller högerjustera

Till höger ...
kvitto ="Vi vill att alla siffror justeras till höger\n\n" kvitto = kvitto + "Produkt {:>8} stycken\n" kvitto = kvitto + "Produkt {:>8} stycken\n" kvitto = kvitto + "Produkt {:>8} stycken\n" kvitto = kvitto + "Produkt {:>8} stycken\n" print(kvitto.format(9,100000, 344,92000,))
Våra siffor kanske ska vara flyttal med 2 decimaler. Vi ger dem lite mer plats samtidligt. 10 betyder nu plats för 10 stycken heltalssiffror och 2 betyder plats för 2 decimaler till höger om kommatecknet.
kvitto ="Vi vill att alla siffror justeras till höger\n\n" kvitto = kvitto + "Produkt {:>10.2f} kg\n" kvitto = kvitto + "Produkt {:>10.2f} kg\n" kvitto = kvitto + "Produkt {:>10.2f} kg\n" kvitto = kvitto + "Produkt {:>10.2f} kg\n" print(kvitto.format(9,1000, 344,92000,))
Till vänster ...
kvitto ="Vi vill att alla siffror justeras till vänster\n\n" kvitto = kvitto + "Produkt {:<8} stycken\n" kvitto = kvitto + "Produkt {:<8} stycken\n" kvitto = kvitto + "Produkt {:<8} stycken\n" kvitto = kvitto + "Produkt {:<8} stycken\n" print(kvitto.format(9,100000, 344,92000,))
I mitten (centrerar) ...
kvitto ="Vi vill att alla siffror justeras till vänster\n\n" kvitto = kvitto + "Produkt {:^8} stycken\n" kvitto = kvitto + "Produkt {:^8} stycken\n" kvitto = kvitto + "Produkt {:^8} stycken\n" kvitto = kvitto + "Produkt {:^8} stycken\n" print(kvitto.format(9,100000, 344,92000,))
Placera tecken först ...
kvitto ="Vi vill att alla siffror justeras till vänster\n\n" kvitto = kvitto + "Produkt {:=8} stycken\n" kvitto = kvitto + "Produkt {:=8} stycken\n" kvitto = kvitto + "Produkt {:=8} stycken\n" kvitto = kvitto + "Produkt {:=8} stycken\n" print(kvitto.format(9,100000, -344,+92000,))
Använd alltid tecken
txt = "Temperaturen varierar mellan {:+} och {:+} grader celsius" print(txt.format(-20,30))
Gör stora tal mer läsbara genom att separera 1000 -talen
txt = "USAs statsskuld är {:,} dollar i aug 2024" print(txt.format(35154000000000))
Presentera decimalt som binärt
txt="{0} i binär form {0:b}" print(txt.format(123))
Skapa en funktion som givet ett decimaltal returnerar den binära strängen.
def dec2bin(d): return "{0:b}".format(d) print(dec2bin(123))
Tvinga fram presentation i decimal form
txt = "Nu är det {:d} grader varmt." print(txt.format(22))
Vänta lite, säger du. Tvinga fram decimal form när det redan är underförstått att den borde visa decimal form? Ja, för du kanske anger temperaturen i binär form, hexadecimal eller oktal form!
txt = "Nu är det {:d} grader varmt." print(txt.format(0b10110)) print(txt.format(0x13)) print(txt.format(0o21))
stad = "Göteborg" temp = 22 print('I {} är det nu {} grader'.format(stad, temp))
Höger och vänsterjustera inom en reserverad mängd tecken. Använd < respektive > för att ange vilket håll det skall fylla från.
print('[{:>12}]'.format('Göteborg')); print('[{:<12}]'.format('Göteborg'));
Samma med siffror.
print('[{:>12}]'.format(3.1415926)); print('[{:<12}]'.format(3.1415926));
Fyll ut med någonting
print('[{:_>12}]'.format(3.1415926)); print('[{:_<12}]'.format(3.1415926));
Omvandla till binärt och skriv alltid ut med 8 bits.
print('{:0>8b}'.format(0)); print('{:0>8b}'.format(64)); print('{:0>8b}'.format(34));
Skriv något i mitten av en reserverad mängd tecken.
print('{:^16}'.format('mitten')) print('{:_^16}'.format('mitten')) print('{:-^16}'.format('mitten'))
Klipp ord om de är för långa.
print('{:.8}'.format('telekommunikationsradioapparat')) print('[{:10.5}]'.format('telekommunikationsradioapparat'))
Du kan såklart formatera nummer som vanligt.
print('{:d}'.format(77)) print('{:f}'.format(3.141592653589793)) print('{:.2f}'.format(3.141592653589793)) print('{:.14f}'.format(3.141592653589793))
Tecken på siffror, dvs ett + även om det är positivt.
print('{:+d}'.format(55)) print('{:+d}'.format(-55)) print('{:+f}'.format(55)) print('{:+f}'.format(-55))
Vi kan lämna en tom ruta för ett eventuell minustecken också. Dvs inget tecken om positivt.
print('{: d}'.format((+45))) print('{: d}'.format((-45)))
Vi kanske vill ha ett tecken, men vänsterjusterat.
print('{:=+8d}'.format(1230)) print('{:=+8d}'.format(-455))
Vi kan referera till elementen i en dictionary direkt.
temp = { "temp": 23.4, "stad": "Göteborg" } print('I {stad} är det {temp} grader'.format(**temp))
I stora texter kan det vara användbart referera med nyckelord.
print('I {stad} är det {temp} grader'.format(stad='Göteborg', temp=22))
Kom åt klass.
person = {'first': 'Jean-Luc', 'last': 'Picard'} print('{p[first]} {p[last]}'.format(p=person))
Kom åt klass.
class Elev(object): namn = 'Emma' favoritkurser = [ {'namn': 'matematik'}, {'namn': 'programmering'} ] print('{e.namn}: {e.favoritkurser[0][namn]}'.format(e=Elev()))
Formateringen kan påverkas dynamiskt.
print('{:{align}{width}}'.format('mitten', align='^', width='16')) print('{:{width}.{prec}f}'.format(3.1415926, width=5, prec=2))

Följande koder används för att ange vilken typ det handlar om.

b  binärt
ctecken (ascii)
ddecimalt (bas 10)
ooktalt (bas 8)
xhexadecimalt
Xhexadecimalt (VERSALER)
nnummer
evetenskaplig notation
Esamma som e men med E som separator
fflyttal med fix notation
ggenerell form
%procent


Med väldigt små eller stora tal, då vill man ha siffror på ett vetenskapligt format för att hålla koll på nollorna.
txt = "En elektron väger {:e} kg och har laddningen {:e} columb." print(txt.format(9.109E-31,1.602E-19))
Du kan justera noggranheten.
txt = "En elektron väger {:1.1e} kg och har laddningen {:1.1e} columb." print(txt.format(9.109E-31,1.602E-19))
Är talen inom räckhåll vill man troligtvis enbart presentera dem på generell form.
txt = "Världsrekordet på 100 meter {:g} sekunder." print(txt.format(9.58))
Är det viktigt att det anges med viss exakthet kanske flyttal är rätt.
txt = "Världsrekordet på 100 meter {:f} sekunder." print(txt.format(9.58))
Du kan justera hur många värdesiffror som ska visas. Tex 2 till vänster och 3 till höger om kommatecknet.
txt = "Världsrekordet på 100 meter {:2.3f} sekunder." print(txt.format(9.58))
Det går att tvinga fram visning i procent.
txt = "Luftfuktigheten är {:%}" print(txt.format(0.57))
Du kan justera hur många värdesiffror som ska visas
txt = "Luftfuktigheten är {:2.2%}" print(txt.format(0.57))

Avancerade exempel

for num in range(0,15): print('{0:{width}b}'.format(num, width=6), end='') print()
for num in range(0,15): for base in 'dboX': print('{0:{width}{base}}'.format(num, base=base, width=6), end=' ') print()
Det går att att skicka in en lista i format.
ip = [192, 168, 0, 1] print('{:02X}{:02X}{:02X}{:02X}'.format(*ip))
Låt oss ta ett exempel och förklara hur vi gör. Säg att vi vill skriva ut alla binära tal mellan 0 och 15, högerjusterat och fylla ut med nollor. Vi börjar i någon ände, t.ex. skriva ut talen 0 till 15.
for a in range(0,16): print('{0}'.format(a))
Vi omvandlar talen till binär form.
for a in range(0,16): print('{0:b}'.format(a))
Vi reserverar ett utrymme motsvarande 5 positioner för talen.
for a in range(0,16): print('{0:5b}'.format(a))
Vi fyller ut med nollor framför värdesiffrorna.
for a in range(0,16): print('{0:0>5b}'.format(a))
19.723176956177 ms