(Támogatók) Kezdje el a Python tanulását a DataCamp ingyenes Intro to Python oktatóprogramjával. Tanuljon adattudományt interaktív kódolási kihívások teljesítésével és szakértő oktatók videóinak megtekintésével. Kezdd el most!
Frissítve: 2020. január 07.
A format() módszerrel tetszőlegesen formázhatsz karakterláncot.
Syntax: template.format(p1, p1, .... , k1=v1, k2=v2)
a sablon egy formátumkódokat tartalmazó karakterlánc, a format() módszer az argumentumát használja az egyes formátumkódok értékének helyettesítésére. Például:
>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)
{0} és {1} a formátumkódok. A {0} formátumkód helyébe a format() első argumentuma, azaz 12 lép, míg a {1} helyébe a format() második argumentuma, azaz 31 lép.
Várt kimenet:
Sam has 12 red balls and 31 yellow balls
Ez a technika egyszerű formázás esetén rendben van, de mi van, ha a lebegőpontos szám pontosságát szeretnénk megadni? Ilyenkor többet kell megtudnia a formátumkódokról. Íme a formátumkódok teljes szintaxisa.
Szintaxis: {:}
A type formátumkódokkal együtt használható:
| Formátumkódok | Megnevezés |
|---|---|
d |
a egész számok |
f |
lebegőpontos számokhoz |
b |
bináris számokhoz |
o |
oktális számokhoz |
x |
oktális hexadecimális számokhoz |
s |
karakterláncokhoz |
e |
a lebegőpontos számokhoz exponens formátumban |
A következő példák egyértelműbbé teszik a dolgokat.
1. példa:
>>> "Floating point {0:.2f}".format(345.7916732)
Itt 2 számjegyű pontosságot adunk meg, és f lebegőpontos szám ábrázolására használjuk.
Várt kimenet:
Floating point 345.79
Példa 2:
12 |
>>> import math>>> "Floating point {0:10.3f}".format(math.pi)
|
Itt 3 számjegy pontosságot, 10 szélességet és f lebegőpontos számot adunk meg.
Várt kimenet:
Floating point 3.142
3. példa:
"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)
Itt d a {1:d}-ben egész számértéket jelöl.
Várható kimenet:
Floating point pi = 3.142, with 3 digit precision
A pontosságot csak lebegőpontos számok esetén kell megadni, ha egész számra adunk meg pontosságot, akkor ValueError fog feljönni.
Példa 5:
'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
Várt kimenet:
Sam has 31 red balls and 12 yellow balls
Példa 6:
"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1
Várt kimenet:
In binary 4 is 100
Példa 7:
12 |
array = "A = {0}, B = {1}, C = {2}".format(*array)
|
Várt kimenet:
A = 34, B = 66, C = 12
Példa 8:
123456 |
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d)
|
Várt kimenet:
Sam had 122 hats and 42 mats
A format() módszer támogatja a kulcsszavas argumentumokat is.
'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)
Megjegyzendő, hogy a kulcsszavas argumentumok használata során a {}-en belüli argumentumokat kell használnunk, nem pedig a numerikus indexet.
A pozíció argumentumokat is keverhetjük a kulcsszó argumentumokkal
12 |
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31)
|
A format() módszer a karakterlánc formázására elég új és a Python 2.6-ban került bevezetésre . Van egy másik régi technika, amit a régebbi kódokban láthatunk, amely lehetővé teszi, hogy a format() módszer helyett a % operátorral formázzuk a karakterláncot.
Vegyünk egy példát.
"%d pens cost = %.2f" % (12, 150.87612)
Itt a % bal oldalán lévő sablon karakterláncot használjuk. A {} helyett a % formátumkódokat használjuk. A % jobb oldalán tuple-t használunk az értékeink tárolására. A %d és %.2f formátum-specifikátoroknak nevezzük, ezek %-vel kezdődnek, amelyet az adattípust jelölő karakter követ. Például %d formátummeghatározó egy egész szám helyőrzője, hasonlóan %.2f egy lebegőpontos szám helyőrzője.
Így %d helyébe a tuple első értéke, azaz 12 lép, %.2f helyébe pedig a második érték, azaz 150.87612.
Várt kimenet:
12 pens cost = 150.88
Még néhány példa.
Példa 1:
Új:
"{0:d} {1:d} ".format(12, 31)
Régi:
"%d %d" % (12, 31)
Várt kimenet:
12 31
Példa 2:
Új:
"{0:.2f} {1:.3f}".format(12.3152, 89.65431)
Régi:
"%.2f %.3f" % (12.3152, 89.65431)
Várt kimenet:
12.32 89.654
Példa 3:
Új:
"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )
Old: