Python String Formatting

(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:

Vastaa

Sähköpostiosoitettasi ei julkaista.