Formatowanie ciągów w Pythonie

(Sponsorzy) Rozpocznij naukę Pythona z DataCamp’s free Intro to Python tutorial. Ucz się Data Science poprzez wykonywanie interaktywnych zadań kodowania i oglądanie filmów instruktażowych. Start Now!

Updated on Jan 07, 2020

Metoda format() pozwala sformatować ciąg znaków w dowolny sposób.

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

template jest łańcuchem zawierającym kody formatów, metoda format() używa swojego argumentu do zastąpienia wartości dla każdego z kodów formatów. Na przykład:

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

{0} i {1} są kodami formatu. Kod formatu {0} jest zastępowany przez pierwszy argument format(), tj. 12, natomiast {1} jest zastępowany przez drugi argument format(), tj. 31.

Oczekiwane wyjście:

Sam has 12 red balls and 31 yellow balls

Ta technika jest dobra do prostego formatowania, ale co, jeśli chcesz określić precyzję liczby zmiennoprzecinkowej? Aby to zrobić, musisz dowiedzieć się więcej o kodach formatujących. Oto pełna składnia kodów formatów.

Syntaktyka: {:}

Kod type może być używany z kodami formatu:

.

Kody formatów Opis
d dla liczb całkowitych
f dla liczb zmiennoprzecinkowych
b dla liczb binarnych
o dla liczb ósemkowych
x dla liczb ósemkowych szesnastkowych
s dla łańcuchów
e dla liczb zmiennoprzecinkowych w formacie wykładniczym

Następujące przykłady sprawią, że wszystko będzie bardziej jasne.

Przykład 1:

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

Tutaj określamy 2 cyfry precyzji, a f jest używane do reprezentowania liczby zmiennoprzecinkowej.

Oczekiwane wyjście:

Floating point 345.79

Przykład 2:

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

Tutaj określamy 3 cyfry precyzji, 10 dla szerokości i f dla liczby zmiennoprzecinkowej.

Oczekiwane wyjście:

Floating point 3.142

Przykład 3:

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

Tutaj d w {1:d} reprezentuje wartość całkowitą.

Oczekiwane wyjście:

Floating point pi = 3.142, with 3 digit precision

Potrzebujesz określić precyzję tylko w przypadku liczb zmiennoprzecinkowych, jeśli określisz precyzję dla liczb całkowitych ValueError zostanie podniesione.

Przykład 5:

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

Oczekiwane wyjście:

Sam has 31 red balls and 12 yellow balls

Przykład 6:

Oczekiwane wyjście:

In binary 4 is 100

Przykład 7:

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

Oczekiwane Wyjście:

A = 34, B = 66, C = 12

Przykład 8:

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

Oczekiwane wyjście:

Sam had 122 hats and 42 mats

Metoda format() obsługuje również argumenty słów kluczowych.

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

Uwaga podczas używania argumentów słów kluczowych musimy używać argumentów wewnątrz {}, a nie indeksu numerycznego.

Możesz również mieszać argumenty pozycji z argumentami słów kluczowych

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

Metoda format() formatowania łańcucha jest całkiem nowa i została wprowadzona w Pythonie 2.6 . Istnieje inna stara technika, którą można spotkać w starszych kodach, która pozwala na formatowanie łańcucha za pomocą operatora % zamiast metody format().

Przyjrzyjrzyjmy się przykładowi.

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

Tutaj używamy szablonu łańcucha po lewej stronie %. Zamiast {} dla kodów formatów używamy %. Po prawej stronie % używamy tuple, aby zawrzeć nasze wartości. %d i %.2f są nazywane specyfikatorami formatu, zaczynają się od %, po którym następuje znak reprezentujący typ danych. Na przykład %d jest specyfikatorem formatu dla liczby całkowitej, podobnie %.2f jest specyfikatorem dla liczby zmiennoprzecinkowej.

Więc %d jest zastępowane przez pierwszą wartość krotki, tj. 12, a %.2f jest zastępowane przez drugą wartość, tj. 150.87612.

Spodziewane wyjście:

12 pens cost = 150.88

Kolejne przykłady.

Przykład 1:

Nowy:

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

Stary:

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

Oczekiwane wyjście:

12 31

Przykład 2:

Nowy:

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

Old:

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

Oczekiwane wyjście:

12.32 89.654

Przykład 3:

Nowe:

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

Stare:

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.