Python String Formatting

(Sponsors) Begin met het leren van Python met DataCamp’s gratis Intro to Python tutorial. Leer Data Science door het voltooien van interactieve codering uitdagingen en het bekijken van video’s door deskundige instructeurs. Begin nu!

Bijgewerkt op 07 jan 2020

Met de methode format() kunt u een string opmaken zoals u dat wilt.

Syntax: template.format(p1, p1, .... , k1=v1, k2=v2)

template is een string die opmaakcodes bevat, format()-methode gebruikt zijn argument om de waarde voor elke opmaakcode te vervangen. Bijvoorbeeld:

>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)

{0} en {1} zijn formaatcodes. De formaatcode {0} wordt vervangen door het eerste argument van format(), d.w.z. 12, terwijl {1} wordt vervangen door het tweede argument van format(), d.w.z. 31.

Gewachte uitvoer:

Sam has 12 red balls and 31 yellow balls

Deze techniek is in orde voor eenvoudige opmaak, maar wat als u de precisie in drijvende komma getallen wilt opgeven? Voor zoiets moet je meer leren over format codes. Hier volgt de volledige syntaxis van formaatcodes.

Syntax: {:}

De type kan worden gebruikt met formaat codes:

Formaatcodes Beschrijving
d voor gehele getallen
f voor drijvende-kommagetallen
b voor binaire getallen
o voor octale getallen
x voor hexadecimale octale getallen
s voor string
e voor drijvende komma in exponentformaat

De volgende voorbeelden zullen de zaken duidelijker maken.

Voorbeeld 1:

>>> "Floating point {0:.2f}".format(345.7916732)

Hier geven we 2 cijfers van precisie op en f wordt gebruikt om drijvende komma-getal weer te geven.

Verwachte uitvoer:

Floating point 345.79

Voorbeeld 2:

12
>>> import math>>> "Floating point {0:10.3f}".format(math.pi)

Hier specificeren we 3 cijfers voor de precisie, 10 voor de breedte en f voor het drijvende komma getal.

Verwachte uitvoer:

Floating point 3.142

Voorbeeld 3:

"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)

Hier vertegenwoordigt d in {1:d} een gehele waarde.

Verwachte uitvoer:

Floating point pi = 3.142, with 3 digit precision

U moet de precisie alleen opgeven in het geval van drijvende-kommagetallen als u de precisie opgeeft voor gehele getallen ValueError zal worden verhoogd.

Voorbeeld 5:

'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)

Verwachte uitvoer:

Sam has 31 red balls and 12 yellow balls

Voorbeeld 6:

Verwachte uitvoer:

In binary 4 is 100

Voorbeeld 7:

12
array = "A = {0}, B = {1}, C = {2}".format(*array)

Verwachte output:

A = 34, B = 66, C = 12

Voorbeeld 8:

123456
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d)

Verwachte output:

Sam had 122 hats and 42 mats

De methode format() ondersteunt ook trefwoordargumenten.

'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)

Noteer bij het gebruik van trefwoordargumenten dat we argumenten moeten gebruiken binnen {} niet numerieke index.

U kunt ook positieargumenten mengen met trefwoordargumenten

12
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31)

De format()-methode voor het formatteren van strings is vrij nieuw en werd geïntroduceerd in Python 2.6 . Er is een andere oude techniek die u zult zien in oudere codes die u toelaat om string formatteren met behulp van % operator in plaats van format() methode.

Laten we een voorbeeld.

"%d pens cost = %.2f" % (12, 150.87612)

Hier gebruiken we template string aan de linkerkant van %. In plaats van {} voor formaatcodes gebruiken we %. Aan de rechterkant van % gebruiken we tuple om onze waarden te bevatten. %d en %.2f worden format specifiers genoemd, ze beginnen met % gevolgd door een karakter dat het datatype weergeeft. Bijvoorbeeld %d format specifier is een placeholder voor een geheel getal, op dezelfde manier %.2f is een placeholder voor drijvende komma getallen.

Dus %d wordt vervangen door de eerste waarde van de tupel nl 12 en %.2f wordt vervangen door de tweede waarde nl 150.87612.

Verwachte output:

12 pens cost = 150.88

Enkele andere voorbeelden.

Voorbeeld 1:

Nieuw:

"{0:d} {1:d} ".format(12, 31)

Old:

"%d %d" % (12, 31)

Verwacht output:

12 31

Voorbeeld 2:

Nieuw:

"{0:.2f} {1:.3f}".format(12.3152, 89.65431)

Old:

"%.2f %.3f" % (12.3152, 89.65431)

Expected Output:

12.32 89.654

Voorbeeld 3:

Nieuw:

"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )

Old:

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.