(Sponsorer) Kom godt i gang med at lære Python med DataCamps gratis introduktion til Python tutorial. Lær datalogi ved at gennemføre interaktive kodningsudfordringer og se videoer af ekspertinstruktører. Start nu!
Opdateret den 07. jan. 2020
Med format()
-metoden kan du formatere strengen på den måde, du ønsker.
Syntaks: template.format(p1, p1, .... , k1=v1, k2=v2)
Skabelon er en streng, der indeholder formatkoder, format()
-metoden bruger sit argument til at erstatte værdien for hver formatkode. F.eks.:
>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)
{0}
og {1}
er formatkoder. Formatkoden {0}
erstattes af det første argument i format()
, dvs. 12
, mens {1}
erstattes af det andet argument i format()
, dvs. 31
.
Forventet output:
Sam has 12 red balls and 31 yellow balls
Denne teknik er i orden til simpel formatering, men hvad hvis du ønsker at angive præcision i flydende punkttal? For sådan noget skal du lære mere om formatkoder. Her er den fulde syntaks for formatkoder.
Syntaks: {:}
Den type
kan bruges med formatkoder:
Formatkoder | Beskrivelse |
---|---|
d |
for hele tal |
f |
for floating point tal |
b |
for binære tal |
o |
|
o |
for oktaltal |
x |
for oktale hexadecimaltal |
s |
for string |
e |
for floating point i eksponentformat |
Følgende eksempler vil gøre tingene mere klare.
Eksempel 1:
>>> "Floating point {0:.2f}".format(345.7916732)
Her angiver vi 2
cifre i præcision, og f
bruges til at repræsentere et tal med flydende komma.
Forventet output:
Floating point 345.79
Eksempel 2:
12 |
>>> import math>>> "Floating point {0:10.3f}".format(math.pi) |
Her angiver vi 3
cifre for præcision, 10
for bredde og f
for flydende punkttal.
Forventet output:
Floating point 3.142
Eksempel 3:
"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)
Her repræsenterer d
i {1:d}
en heltalsværdi.
Forventet output:
Floating point pi = 3.142, with 3 digit precision
Du skal kun angive præcision i tilfælde af flydende punkttal, hvis du angiver præcision for heltal ValueError
vil blive hævet.
Eksempel 5:
'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
Venteret output:
Sam has 31 red balls and 12 yellow balls
Eksempel 6:
"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1
Venteret output:
In binary 4 is 100
Eksempel 7:
12 |
array = "A = {0}, B = {1}, C = {2}".format(*array) |
Forventet output:
12
array = "A = {0}, B = {1}, C = {2}".format(*array)
Forventet output:
A = 34, B = 66, C = 12
Eksempel 8:
123456 |
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d) |
Forventet output:
Sam had 122 hats and 42 mats
Metoden format()
understøtter også nøgleord som argumenter.
'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)
Bemærk, mens vi bruger nøgleordargumenter, skal vi bruge argumenter inden for {}
ikke numerisk indeks.
Du kan også blande positionsargumenter med nøgleordsargumenter
12 |
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31) |
Metoden format()
til formatering af streng er ret ny og blev introduceret i Python 2.6 . Der er en anden gammel teknik, du vil se i ældre koder, som giver dig mulighed for at formatere streng ved hjælp af %
operatoren i stedet for format()
metoden.
Lad os tage et eksempel.
"%d pens cost = %.2f" % (12, 150.87612)
Her bruger vi skabelonstreng til venstre for %
. I stedet for {}
til formatkoder bruger vi %
. På højre side af %
bruger vi tupler til at indeholde vores værdier. %d
og %.2f
kaldes formatspecifikatorer, de begynder med %
efterfulgt af et tegn, der repræsenterer datatypen. F.eks. er %d
formatspecifikator en pladsholder for et heltal, og på samme måde er %.2f
en pladsholder for et flydende tal.
Så %d
erstattes af den første værdi i tuplen, dvs. 12
, og %.2f
erstattes af den anden værdi, dvs. 150.87612
.
Forventet output:
12 pens cost = 150.88
Samtlige eksempler.
Eksempel 1:
Nyt:
"{0:d} {1:d} ".format(12, 31)
Gammelt:
"%d %d" % (12, 31)
Forventet output:
12 31
Eksempel 2:
Nyt:
"{0:.2f} {1:.3f}".format(12.3152, 89.65431)
Gammel:
"%.2f %.3f" % (12.3152, 89.65431)
Forventet output:
"{0:.2f} {1:.3f}".format(12.3152, 89.65431)
Forventet output:
12.32 89.654
Eksempel 3:
Nyt:
"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )
Gammel: