Formátování řetězců v jazyce Python

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.