2023-02-26

Myśląc o Pythonie: Formatowanie string

Hejka, dziś będzie dość krótko, omówimy sobie jeszcze jedną rzecz związaną z łańcuchami znaków w Pythonie (w innych językach też występują podobne zjawiska), czyli formatowanie string - co to takiego? Nic innego jak nakłonienie łańcucha znaków, by wyglądał dokładnie w taki sposób, jak oczekujemy.

Mamy różne metody formatowania string w Pythonie, tutaj omówimy sobie tylko takie podstawowe. O co dokładnie chodzi? Mówiliśmy sobie wcześniej konkatenacji, czyli możliwości łączenia stringów poprzez użycie operatora plusa - to jest najprostszy sposób by dynamicznie zbudować jakiś wyjściowy string, na przykład, żeby dynamicznie wstawić do niego wartość jakiejś zmiennej.

W praktyce, dużo większe możliwości daje nam, właśnie dziś omawiane, formatowanie łańcuchów znaków. Możemy w tym celu użyć tak zwanej metody, o "nieoczywistej" nazwie format. Najlepiej będzie to sobie pokazać na przykładzie.

Kod generujący błąd w Pythonie

Mamy sobie jakąś ilość czegoś w magazynie, i chcemy ten stan magazynowy wyświetlić. Mamy zatem zmienną pcs oznaczającą z angielskiego pieces, i komunikat w zmiennej s. Natomiast taki kod wygeneruje nam błąd, ponieważ zmienna pcs to liczba, zatem nie możemy jej dodać operatorem plusa do stringa. Musielibyśmy ją przekonwertować na stringa za pomocą funkcji str(). Mielibyśmy zatem kod jak na obrazku poniżej.

Kod wyświetlający stan magazynowy - Python.

Jest to metoda, która zadziała, jednak jakoś bardzo elegancka nie jest. Musimy użyć plusów i konwersji.... Da się może to zrobić prościej? Jak pewnie się już domyślasz - oczywiście, że się da 🙂

Do wygodniejszego składania rzeczy w napis, mamy właśnie pewne techniki formatowania string w języku programowania Python. Przedstawmy jedną z takich technik.

Możemy sobie tak randomowo i dowolnie wstawić coś do środeczka naszego stringa, ale musimy go trochę zmodyfikować...

Użycie funkcji format w Pythonie

Możemy sobie wstawić nawiasy klamrowe, tam gdzie chcemy by się pojawiła nasza zmienna - będą one tzw. placeholderem (ang. trzymacz miejsca). W miejscu gdzie wstawiliśmy nawiasy, zostaną wstawione argumenty funkcji format, a konkretniej - jeśli będzie więcej nawiasów, argumenty zostaną wstawione w kolejności. Efekt jak poniżej.

Efekt działania kodu z funkcją format()

Czyli format bierze to co ma w argumencie, i wstawia to w miejsce nawiasów klamrowych w stringu, oczywiście format uruchamiamy "na" stringu, dlatego jest on podany po kropce, w myśl zasady obiekt.metoda() - o czym jeszcze sobie kiedyś opowiemy 😉

Metoda ta jest bez porównania bardziej wszechstronna niż konkatenacja, a dodatkowo odpada problem z konwersją typów 😉 Poniżej kodzik pokazujący jak wygląda to z większą ilością zmiennych.

Użycie funkcji format, w przypadku większej ilości zmiennych do wyświetlenia

Mamy tutaj taką sytuację, że mamy dwie zmienne (z lenistwa takie same), i chcemy je wyświetlić w miejscu nawiasów klamrowych. Zatem funkcja format, rozumie to tak, że w pierwszych nawiasach ma wstawić zmienną, która została podana jako pierwsza, a w drugich - tą podaną jako druga zmienna (po przecinku).

Bonus

Na koniec, możemy sobie powiedzieć o jeszcze jednej metodzie formatowania string, a mianowicie - nie musimy używać funkcji format(), możemy sobie po prostu w nawiasach wpisać nazwę zmiennej jaka tam ma zostać wyświetlona, o tak:

Metoda formatowania string - formatted string

Tutaj po prostu by to działało, dodajemy przed naszym łańcuchem znaków literkę f, tak by dać znak interpreterowi Pythona, że to co będzie w stringu, będzie tzw. formatted stringiem, czyli będzie zawierało właśnie takie nawiasiki z nazwami zmiennych. Zatem Python wie, że tam ma te właśnie zmienne umieścić, a raczej ich wartości.

Na dziś to wszystko, możemy bezpiecznie wyłączyć IDE 😉

Dodaj komentarz

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram