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