Python String Formatting

(Sponsors) Începeți să învățați Python cu tutorialul gratuit Introducere în Python de la DataCamp. Învățați știința datelor completând provocări interactive de codificare și vizionând videoclipuri realizate de instructori experți. Începeți acum!

Actualizat la 07 ian. 2020

Metoda format() vă permite să formatați șirul de caractere în orice mod doriți.

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

șablonul este un șir care conține coduri de format, metoda format() utilizează argumentul său pentru a înlocui valoarea pentru fiecare cod de format. De exemplu:

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

{0} și {1} sunt coduri de format. Codul de format {0} este înlocuit cu primul argument al lui format(), adică 12, în timp ce {1} este înlocuit cu al doilea argument al lui format(), adică 31.

Lovitură așteptată:

Sam has 12 red balls and 31 yellow balls

Această tehnică este bună pentru o formatare simplă, dar ce se întâmplă dacă doriți să specificați precizia unui număr în virgulă mobilă? Pentru un astfel de lucru trebuie să învățați mai multe despre codurile de formatare. Iată sintaxa completă a codurilor de format.

Sintaxa: {:}

Codul type poate fi utilizat cu codurile de format:

.

.

.

Coduri de format Descriere
d pentru numere întregi
f pentru numere cu virgulă mobilă
b pentru numere binare
o
o pentru numere octale
x pentru numere octale hexazecimale
s pentru șir de caractere
e pentru virgulă mobilă în format exponent

Exemplele următoare vor face lucrurile mai clare.

Exemplul 1:

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

Aici se specifică 2câteva cifre de precizie și se folosește f pentru a reprezenta numărul în virgulă mobilă.

Lovitură așteptată:

Floating point 345.79

Exemplu 2:

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

Aici se specifică 3 cifrele de precizie, 10 pentru lățime și f pentru numărul în virgulă mobilă.

Lovitură așteptată:

Floating point 3.142

Exemplul 3:

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

Aici d în {1:d} reprezintă o valoare întreagă.

Succesul așteptat:

Floating point pi = 3.142, with 3 digit precision

Trebuie să specificați precizia doar în cazul numerelor cu virgulă mobilă dacă specificați precizia pentru numere întregi ValueError va fi ridicată.

Exemplul 5:

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

Lovitură așteptată:

Sam has 31 red balls and 12 yellow balls

Exemplul 6:

Lovitură așteptată:

"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1

Lovitură așteptată:

In binary 4 is 100

Exemplul 7:

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

Salire așteptată:

A = 34, B = 66, C = 12

Exemplul 8:

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

Salire așteptată:

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

Salire așteptată:

Sam had 122 hats and 42 mats

Metoda format() acceptă, de asemenea, argumente de tip cuvinte cheie.

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

Rețineți că atunci când folosim argumente de tip cuvânt cheie trebuie să folosim argumente în interiorul lui {} și nu indice numeric.

De asemenea, puteți amesteca argumente de poziție cu argumente de cuvinte cheie

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

Metoda format() de formatare a șirurilor de caractere este destul de nouă și a fost introdusă în Python 2.6 . Există o altă tehnică veche pe care o veți vedea în codurile vechi care vă permite să formatați șirul folosind operatorul % în loc de metoda format().

Să luăm un exemplu.

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

Aici folosim șirul șablon în stânga lui %. În loc de {} pentru codurile de format, noi folosim %. În partea dreaptă a % folosim tuple pentru a conține valorile noastre. %d și %.2f se numesc specificatori de format, aceștia încep cu % urmat de un caracter care reprezintă tipul de date. De exemplu, %d este un specificator de format pentru un număr întreg, în mod similar %.2f este un specificator de format pentru un număr cu virgulă mobilă.

Deci %d este înlocuit cu prima valoare din tuple, adică 12, iar %.2f este înlocuit cu a doua valoare, adică 150.87612.

Lovitură așteptată:

12 pens cost = 150.88

Câteva exemple suplimentare.

Exemplu 1:

Noi:

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

Vechi:

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

Sort așteptat:

12 31

Exemplu 2:

Noi:

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

Vechi:

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

Lovitură așteptată:

12.32 89.654

Exemplul 3:

Noi:

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

Vechi:

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.