Python String Formatting

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

esetében.

.

.

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:

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.