(Sponsorit) Aloita Pythonin oppiminen DataCampin ilmaisella Intro to Python -opetuksella. Opi Data Sciencea suorittamalla interaktiivisia koodaushaasteita ja katsomalla asiantuntijakouluttajien videoita. Aloita nyt!
Päivitetty 07.01.2020
Metodin format()
avulla voit muotoilla merkkijonon haluamallasi tavalla.
Syntax: template.format(p1, p1, .... , k1=v1, k2=v2)
template on merkkijono, joka sisältää muotoilukoodit, format()
-metodi käyttää argumenttiaan korvatakseen kunkin muotoilukoodin arvon. Esimerkiksi:
>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)
{0}
ja {1}
ovat muotokoodeja. Formaattikoodi {0}
korvataan format()
:n ensimmäisellä argumentilla eli 12
, kun taas {1}
korvataan format()
:n toisella argumentilla eli 31
.
Odotetut tulosteet:
Sam has 12 red balls and 31 yellow balls
Tämä tekniikka sopii yksinkertaiseen formatointiin, mutta entäpä, jos halutaan määritellä tarkkuus liukuluvussa? Tällaista asiaa varten sinun on opittava lisää muotoilukoodeista. Tässä on muotokoodien täydellinen syntaksi.
Syntaksi: {:}
type
voidaan käyttää formaattikoodien kanssa:
Formaattikoodit | Kuvaus |
---|---|
d |
kokonaisluvuille |
f |
liukuluvuille |
b |
binääriluvuille |
o |
oktaaliluvuille |
x |
oktaaliheksadesimaaliluvuille |
s |
merkkijonoille |
e |
liukuluvulle eksponenttimuodossa |
Seuraavat esimerkit selventävät asioita.
Esimerkki 1:
>>> "Floating point {0:.2f}".format(345.7916732)
Tässä määritetään 2
numeron tarkkuus ja f
käytetään esittämään liukulukua.
Odotetut tulokset:
Floating point 345.79
Esimerkki 2:
12 |
>>> import math>>> "Floating point {0:10.3f}".format(math.pi) |
Tässä määritetään tarkkuudeksi 3
numeroa, leveydeksi 10
ja liukuluvuksi f
.
Odotetut tulokset:
Floating point pi = 3.142, with 3 digit precision
Tarkkuus on määritettävä vain liukulukujen tapauksessa, jos määrität tarkkuuden kokonaisluvulle ValueError
nostetaan.
Esimerkki 5:
'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
Odotetut tulosteet:
Sam has 31 red balls and 12 yellow balls
Esimerkki 6:
"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1
Odotetut tulosteet:
In binary 4 is 100
Esimerkki 7:
12 |
array = "A = {0}, B = {1}, C = {2}".format(*array) |
Odotetut tuotokset:
A = 34, B = 66, C = 12
Esimerkki 8:
123456 |
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d) |
Odotetut tuotokset:
Sam had 122 hats and 42 mats
Metodi format()
tukee myös avainsana-argumentteja.
'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)
Huomaa, kun käytämme avainsana-argumentteja, meidän on käytettävä argumentteja {}
:n sisällä eikä numeerista indeksiä.
Voit myös sekoittaa asema-argumentteja avainsana-argumentteihin
12 |
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31) |
Menetelmä merkkijonon muotoilemiseksi format()
on melko uusi ja se otettiin käyttöön Python 2.6:ssa . On olemassa toinenkin vanha tekniikka, jota näkee vanhoissa koodeissa ja jonka avulla merkkijono voidaan muotoilla käyttämällä %
-operaattoria format()
-menetelmän sijasta.
Katsotaanpa esimerkki.
"%d pens cost = %.2f" % (12, 150.87612)
Tässä käytämme mallimerkkijonoa %
vasemmalla puolella. Formaattikoodien {}
sijasta käytämme %
. %
:n oikealla puolella käytämme tuplea sisältämään arvomme. %d
ja %.2f
ovat muotomääritteitä, ja ne alkavat %
:llä, jota seuraa tietotyyppiä kuvaava merkki. Esimerkiksi %d
on kokonaisluvun sijoitusmerkki, ja vastaavasti %.2f
on liukuluvun sijoitusmerkki.
Siten %d
korvataan tuplan ensimmäisellä arvolla eli 12
ja %.2f
korvataan toisella arvolla eli 150.87612
.
Odotetut tulosteet:
12 pens cost = 150.88
Joitakin esimerkkejä.
Esimerkki 1:
Uusi:
"{0:d} {1:d} ".format(12, 31)
Vanha:
"%d %d" % (12, 31)
Odotetut tulosteet:
12 31
Esimerkki 2:
Uusi:
"{0:.2f} {1:.3f}".format(12.3152, 89.65431)
Vanha:
"%.2f %.3f" % (12.3152, 89.65431)
Odotetut tuotokset:
12.32 89.654
Esimerkki 3:
Uusi:
"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )
Vanha: