(Sponzoři) Začněte se učit Python s bezplatným výukovým kurzem Úvod do jazyka Python od DataCamp. Naučte se Data Science plněním interaktivních kódovacích úkolů a sledováním videí od odborných instruktorů. Začněte hned!
Aktualizováno 07.01.2020
Metoda format()
umožňuje formátovat řetězec libovolným způsobem.
Syntaxe: template.format(p1, p1, .... , k1=v1, k2=v2)
šablona je řetězec obsahující formátovací kódy, metoda format()
použije svůj argument k nahrazení hodnoty pro jednotlivé formátovací kódy. Například:
>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)
{0}
a {1}
jsou kódy formátu. Formátovací kód {0}
je nahrazen prvním argumentem format()
, tj. 12
, zatímco {1}
je nahrazen druhým argumentem format()
, tj. 31
.
Očekávaný výstup:
Sam has 12 red balls and 31 yellow balls
Tato technika je v pořádku pro jednoduché formátování, ale co když chcete určit přesnost čísla v plovoucí desetinné čárce? Pro takovou věc se musíte naučit více o formátovacích kódech. Zde je úplná syntaxe formátovacích kódů.
Syntaxe: {:}
S formátovacími kódy lze použít type
:
Kódy formátu | Popis |
---|---|
d |
pro celá čísla |
f |
pro čísla s pohyblivou řádovou čárkou |
b |
pro binární čísla |
o |
pro osmičková čísla |
x |
pro osmičková šestnáctková čísla |
s |
pro řetězec |
e |
pro čísla s plovoucí desetinnou čárkou ve formátu exponentu |
Následující příklady vše objasní.
Příklad 1:
>>> "Floating point {0:.2f}".format(345.7916732)
Zde zadáváme 2
číslic přesnosti a f
se používá pro reprezentaci čísla s pohyblivou řádovou čárkou.
Očekávaný výstup:
Floating point 345.79
Příklad 2:
12 |
>>> import math>>> "Floating point {0:10.3f}".format(math.pi) |
Zde zadáváme 3
číslic přesnosti, 10
pro šířku a f
pro číslo s pohyblivou řádovou čárkou.
Očekávaný výstup:
Floating point 3.142
Příklad 3:
"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)
Zde d
v {1:d}
představuje hodnotu celého čísla.
Očekávaný výstup:
Floating point pi = 3.142, with 3 digit precision
Přesnost je třeba zadat pouze v případě čísel s plovoucí desetinnou čárkou, pokud zadáte přesnost pro celé číslo, bude zvýšena ValueError
.
Příklad 5:
'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
Očekávaný výstup:
Sam has 31 red balls and 12 yellow balls
Příklad 6:
"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1
Očekávaný výstup:
In binary 4 is 100
Příklad 7:
12 |
array = "A = {0}, B = {1}, C = {2}".format(*array) |
Očekávaný výstup:
A = 34, B = 66, C = 12
Příklad 8:
123456 |
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d) |
Očekávaný výstup:
Sam had 122 hats and 42 mats
Metoda format()
podporuje také argumenty klíčových slov.
'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)
Poznámka při použití argumentů klíčových slov musíme použít argumenty uvnitř {}
nikoliv číselný index.
Můžete také kombinovat poziční argumenty s argumenty klíčových slov
12 |
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31) |
Metoda format()
formátování řetězce je zcela nová a byla zavedena v Pythonu 2.6 . Existuje ještě jedna stará technika, se kterou se setkáte ve starších kódech a která umožňuje formátovat řetězec pomocí operátoru %
místo metody format()
.
Uveďme si příklad.
"%d pens cost = %.2f" % (12, 150.87612)
Zde používáme šablonu řetězce vlevo od %
. Místo {}
pro formátovací kódy použijeme %
. Na pravé straně %
používáme tuple, který obsahuje naše hodnoty. %d
a %.2f
se nazývají jako specifikátory formátu, začínají %
a za nimi následuje znak, který představuje datový typ. Např. specifikátor formátu %d
je zástupný znak pro celé číslo, podobně %.2f
je zástupný znak pro číslo s pohyblivou řádovou čárkou.
Takže %d
je nahrazeno první hodnotou tuplu, tj. 12
a %.2f
je nahrazeno druhou hodnotou, tj. 150.87612
.
Očekávaný výstup:
12 pens cost = 150.88
Několik dalších příkladů.
Příklad 1:
Nový:
"{0:d} {1:d} ".format(12, 31)
Starý:
"%d %d" % (12, 31)
Očekávaný výstup:
12 31
Příklad 2:
Nový:
"{0:.2f} {1:.3f}".format(12.3152, 89.65431)
Starý:
"%.2f %.3f" % (12.3152, 89.65431)
Očekávaný výstup:
12.32 89.654
Příklad 3:
Nový:
"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )
Starý: