Python – #83 – str() – .format() – Jak w stringu podstawiać zmienne?

Metoda .format()

Metoda zwraca kopię odpowiednio sformatowanego łańcucha znakowego. Formatowanie stringa polega na zastąpieniu pól w oryginalnym łańcuchu znakowym odpowiadającymi im wartościami argumentów. Pola w łańcuchu znakowym, w które mają być wstawione wartości argumentów, zapisuje się przy pomocy nawiasów klamrowych {}. Zastępowanie nawiasów argumentami zdefiniowane może być albo poprzez indeks numeryczny, argument pozycyjny, czy argument kluczowy. Więcej o formatowaniu znajduje się pod tym linkiem.

Składnia:

str.format(*args, **kwargs)

Parametry:

*args – argumenty pozycyjne, które są wstawiane w pola określone nawiasami klamrowymi, zgodnie z kolejnością podawania argumentów. Przykład: pierwszy argument zostanie wstawiony w pierwszy napotkany nawias klamrowy
**kwargs – argumenty kluczowe, które są wstawiane z zasadą klucz wartość. Przykład: jeżeli w ciągu znakowym umieścimy nawias klamrowy a w nim dowolną nazwę, dowolna nazwa staje się kluczem, który następnie należy użyć podczas podawania argumentów kluczowych w metodzie. 

Wartość zwracana:

str – sformatowany ciąg znakowy zawierający wartości podanych argumentów.

Przykłady:

str1 = 'Cześć, {}'
print(str1.format('Dominik'))  # wynik --> Cześć, Dominik

str2 = 'Test1 - {}; tekst2 - {}'
print(str2.format('Dominik', 'Bednarski'))  # wynik --> Test1 - Dominik; tekst2 - Bednarski

str3 = 'Test1 - {1}; tekst2 - {0}'
print(str3.format('Dominik', 'Bednarski'))  # wynik --> Test1 - Bednarski; tekst2 - Dominik

str4 = 'Test1 - {0}; tekst2 - {0}'
print(str4.format('Dominik'))  # wynik --> Test1 - Dominik; tekst2 - Dominik

str5 = 'Test1 - {nazwisko}; tekst2 - {imie}'
print(str5.format(imie = 'Dominik', nazwisko = 'Bednarski'))  # wynik --> Test1 - Bednarski; tekst2 - Dominik


str1 = "Zapłaciłem {:<7} PLN"
print(str1.format(10))  # wynik --> Zapłaciłem 10      PLN
str1 = "Zapłaciłem {:>7} PLN"
print(str1.format(10))  # wynik --> Zapłaciłem      10 PLN
str1 = "Zapłaciłem {:^7} PLN"
print(str1.format(10))  # wynik --> Zapłaciłem   10    PLN
str1 = "Zapłaciłem {:=7} PLN"
print(str1.format(10))  # wynik --> Zapłaciłem      10 PLN
str1 = "Zapłaciłem {:+} PLN"
str2 = "Zapłaciłem {:+} PLN"
print(str1.format(-10))  # wynik --> Zapłaciłem -10 PLN
print(str2.format(10))   # wynik --> Zapłaciłem +10 PLN
str1 = "Zapłaciłem {:-} PLN"
str2 = "Zapłaciłem {:-} PLN"
print(str1.format(-10))  # wynik --> Zapłaciłem -10 PLN
print(str2.format(10))   # wynik --> Zapłaciłem 10 PLN
str1 = "Zapłaciłem {: } PLN"
str2 = "Zapłaciłem {: } PLN"
print(str1.format(-10))  # wynik --> Zapłaciłem -10 PLN
print(str2.format(10))   # wynik --> Zapłaciłem  10 PLN
str1 = "Zapłaciłem {:,} PLN"
print(str1.format(10000000))  # wynik --> Zapłaciłem 10,000,000 PLN
str1 = "Zapłaciłem {:_} PLN"
print(str1.format(10000000))  # wynik --> Zapłaciłem 10_000_000 PLN
str1 = "Zapłaciłem {:b} PLN"  # wyświetla reprezentację binarną
print(str1.format(10))  # wynik --> Zapłaciłem 1010 PLN
str1 = "Zapłaciłem {:c} PLN"
print(str1.format(57))  # wynik --> Zapłaciłem 9 PLN
str1 = "Zapłaciłem {:d} PLN"
print(str1.format(0xFF))  # wynik --> Zapłaciłem 255 PLN
str1 = "Zapłaciłem {:e} PLN"
str2 = "Zapłaciłem {:E} PLN"
print(str1.format(10000000))  # wynik --> Zapłaciłem 1.000000e+07 PLN
print(str2.format(10000000))  # wynik --> Zapłaciłem 1.000000E+07 PLN
str1 = "Zapłaciłem {:f} PLN"
str2 = "Zapłaciłem {:.2f} PLN"
print(str1.format(10.0))  # wynik --> Zapłaciłem 10.000000 PLN
print(str2.format(10.0))  # wynik --> Zapłaciłem 10.00 PLN
str1 = "Zapłaciłem {:F} PLN"
str2 = "Zapłaciłem {:f} PLN"
print(str1.format(float('inf')))  # wynik --> Zapłaciłem INF PLN
print(str2.format(float('inf')))  # wynik --> Zapłaciłem inf PLN
str1 = "Zapłaciłem {:g} PLN" 
print(str1.format(10.40))  # wynik --> Zapłaciłem 10.4 PLN
str1 = "Zapłaciłem {:G} PLN" 
print(str1.format(10.40))  # wynik --> Zapłaciłem 10.4 PLN
str1 = "Zapłaciłem {:o} PLN" 
print(str1.format(10))  # wynik --> Zapłaciłem 12 PLN
str1 = "Zapłaciłem {:x} PLN" 
print(str1.format(255))  # wynik --> Zapłaciłem ff PLN
str1 = "Zapłaciłem {:X} PLN" 
print(str1.format(255))  # wynik --> Zapłaciłem FF PLN
str1 = "Zapłaciłem {:%} PLN" 
print(str1.format(10))  # wynik --> Zapłaciłem 1000.000000% PLN

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.