Różne sposoby formatowania ciągów w Pythonie: 3 najlepsze metody
Opublikowany: 2021-02-23Formatowanie ciągów jest podstawową funkcją w językach programowania do formatowania lub wstawiania wartości i pozycji określonych przez użytkownika w ciągach. Język C miał na to jeden sposób, który możesz znać, jeśli masz jakieś doświadczenie z językiem C. Python obsługuje jednak nie 1, nie 2, ale 3 różne sposoby formatowania ciągów. Każdy sposób ma swoje zalety i wady, które zobaczymy w tym samouczku. Zobaczymy również, która z 3 metod jest najczęściej używana i skuteczna.
Ucz się kursów nauki danych online z najlepszych uniwersytetów na świecie. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Pod koniec tego samouczka poznasz następujące rzeczy:
- Różne sposoby formatowania ciągów
- Ich użycie z przykładami
- Który sposób jest najbardziej preferowany
Spis treści
Różne sposoby formatowania ciągów
Python otrzymuje wiele aktualizacji, aby poprawić formatowanie ciągów. Przyjrzyjmy się każdemu z nich po kolei.
Metoda 1: Formatowanie ciągu w stylu C
Python zawiera stary sposób formatowania ciągów znaków, używając znaków specjalnych dla każdego typu danych. Ta stara dobra metoda formatowania ciągów została przejęta z języka C i nadal jest bardzo skuteczna. Specyfikator formatu ciągu „%”, po którym następuje dedykowany znak dla każdego typu danych, jest używany do formatowania ciągów.
Przeanalizujmy mały przykład, aby to zrozumieć:
liczba = 8 imię = „różowy człowiek” print("Nazwa to %s, a liczba to %d" %( nazwa, liczba)) |
#Wyjście >> „Nazwa to pinkman, a numer to 8” |
Jak widać, specyfikator formatu %s został użyty do sformatowania nazwy ciągu, a %d został użyty do sformatowania liczby całkowitej. Podobnie istnieje specyfikator formatu dla zmiennoprzecinkowego. Sprawdźmy też to.
liczba = 4,32 lis = [ 1 , 3 , 5 ] print( „lista to %s, a float to %f” %(lis, num)) |
#Wyjście >> lista to [ 1 , 3 , 5 ] a float to 4.320000 |
W powyższym przykładzie używam specyfikatora formatu %f do sformatowania wartości zmiennoprzecinkowej. Warto zwrócić uwagę na dwie rzeczy. Po pierwsze, wartość zmiennoprzecinkowa jest wypisywana jako 4,320000, a nie tylko 4,32. Dlaczego tak? Dzieje się tak, ponieważ Python domyślnie używa dokładności do 6 miejsc po przecinku dla elementów zmiennoprzecinkowych. Po drugie, wydrukowałem listę przy użyciu specyfikatora formatu ciągu. Nie oznacza to, że specyfikator formatu %s może przyjmować dowolny typ danych. Po prostu konwertuje go na ciąg i drukuje. Tak więc wypisywana lista jest zasadniczo ciągiem, a nie listą.
W porządku, więc jak określić, ile wymagana jest dokładność przecinka dziesiętnego?
print("lista to %s, a zmiennoprzecinkowa z dokładnością do 2 punktów to %.2f" %(lis, num)) |
#Wyjście >> lista to [ 1 , 3 , 5 ] a float to 4.32 |
Inną kwestią, na którą należy zwrócić uwagę, jest to, że musimy podać zmienne w kolejności, w jakiej są używane w ciągu. Jeśli kolejność zostanie zmieniona, zostanie odpowiednio zmieniony wynik. Alternatywą, by nie wymagać od nas podawania zmiennych w odpowiedniej kolejności za każdym razem, jest użycie formatowania napisów w nieco inny sposób.
print(„lista to %(a)s, a float to %(b)f” %{„b”: num, „a”: lis}) |
#Wyjście >> lista to [ 1 , 3 , 5 ] a float to 4.320000 |
A jak widzisz, pisanie tego jest bardzo kłopotliwe.
Podsumowując, trzy najczęściej używane specyfikatory formatu to:
- %s dla ciągów
- %d dla liczb całkowitych
- %.<dokładność dziesiętna>f dla pływaków
Metoda 2: Nowe formatowanie ciągu w stylu
Python 3 wprowadził lepszy sposób formatowania ciągów za pomocą metody format() na ciągach. Symbol zastępczy jest używany przez umieszczenie nawiasów klamrowych, a metoda format zawiera zmienne, które należy umieścić w tych pozycjach w ciągu. Spójrzmy na mały przykład, aby to zrozumieć.
nazwa = „skyler” print("Cześć, nazywam się {}".format(imię)) |
#Wyjście >> Cześć, nazywam się skyler |
Jest to znacznie lepsze niż formatowanie w starym stylu, które widzieliśmy powyżej. Nawiasy klamrowe pełnią rolę symbolu zastępczego nazwy zmiennej zawierającej ciąg. Zauważ, że przy metodzie format nie musimy określać typu danych zmiennej, jak to zrobiliśmy w formatowaniu w starym stylu.
Przykład z liczbami również:
liczba = 3 int = 4,34 imię = „Jessy” print( „Cześć, nazywam się {}, number to {}, a float to {}” .format(name, num, int)) |
#Wyjście >> Cześć, mam na imię jessy , numer to 3 , a float to 4,34 |
Schludny! Jak widać, wymaga, aby zmienne były przekazywane do metody format w kolejności, w jakiej zostały użyte w ciągu. Inny sposób wykorzystania metody format, polegający na tym, że nie wymagamy od nas przekazywania wszystkich zmiennych we właściwej kolejności:
print("Cześć, mam na imię {imię}, numer to {num}, a float to {int}".format(int=int, num=num , name=name)) |
#Wyjście >> Cześć, mam na imię jessy , numer to 3 , a float to 4,34 |
W powyższym przykładzie widzimy, że gdy zmienne są wyraźnie wymienione w symbolach zastępczych, to konieczność przekazywania ich do metody format we właściwej kolejności nie jest już wymagana.
Możemy również przekazać pozycję zmiennej w symbolach zastępczych, aby lepiej je śledzić.
print("Cześć, mam na imię {0}, liczba to {1}, a liczba zmiennoprzecinkowa to {2}".format(name, num, int)) |
#Wyjście >> Cześć, mam na imię jessy , numer to 3 , a float to 4,34 |
Metoda 3: Używanie F-Strings
Wprowadzone w Pythonie 3.6 f-strings jest najłatwiejszym i najbardziej wydajnym sposobem formatowania łańcuchów. Są one również nazywane sformatowanymi literałami ciągów. Używają literału f na początku ciągu, aby powiedzieć pythonowi, aby traktował go jako sformatowany ciąg. Symbole zastępcze zawierają rzeczywiste zmienne, które należy umieścić w tej pozycji.
Spójrzmy na przykład.
nazwa = „heisenberg” bill = 100.43print(f”Nazwa to {name}, a rachunek to {bill}”) |
#Wyjście >> Nazywa się heisenberg , a rachunek to 100,43 |
To było całkiem proste. Co więcej, możemy również umieszczać wyrażenia bezpośrednio zamiast zmiennych.
a = 5 b = 8 print( f”Suma to {a+b} “ ) |
#Wyjście >> Suma to 13 |
Możemy również wywoływać funkcje bezpośrednio i uzyskać ich wynik w literałach łańcuchowych.
print( f”Nazwa to {nazwa.upper()} “ ) |
#Wyjście >> Nazywa się HEISENBERG |
Co więcej, możemy użyć ciągów f, aby bezpośrednio zwrócić wartość również z funkcji.
def sumator (imię, wiek, pieniądze): return f”{imię} jest w wieku {wiek} i ma pensję {pieniądze}” |
Saul Goodman ma 45 lat i ma pensję 2000000 |
Jak widzimy, gdy przekazujemy funkcje bezpośrednio do symboli zastępczych, wywołuje funkcje i bezpośrednio umieszcza dane wyjściowe w nawiasach klamrowych. Oczywiście ta metoda formatowania ciągów jest najbardziej wydajna i łatwa do napisania.
Zamówienie: Pytania i odpowiedzi dotyczące wywiadu w Pythonie
Zanim pójdziesz
Formatowanie ciągów jest zwykłym zadaniem, a sposób, w jaki Python wprowadził metodę format oraz f strings, bardzo ułatwia osobom pracującym z Pythonem. F-strings są najczęściej używanym i preferowanym sposobem pracy z formatowaniem ciągu, ponieważ bardzo ułatwia pisanie i konserwację. Dodatkowo sprawia, że kod jest również bardziej Pythonowy! Pod maską ciągi f używają protokołu __format__. Literał f to po prostu cukier składniowy, który python oferuje swoim użytkownikom, aby ułatwić nam pisanie formatowania ciągów.
Jeśli jesteś zainteresowany nauką o danych, sprawdź program IIIT-B i upGrad Executive PG w dziedzinie Data Science , który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z ekspertami z branży, 1 -on-1 z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy z najlepszymi firmami.
1. Wbudowana w Pythonie metoda string format() przekształca dostarczony łańcuch w bardziej użyteczny wynik. Funkcja format() w Python3 jest jedną z metod formatowania ciągów znaków, która umożliwia wielokrotne podstawienie, a także formatowanie wartości. Metoda format() wykorzystuje formatowanie pozycyjne do łączenia elementów w ciągu. Dodaj dodatkowy argument do metody drukowania w Pythonie 3, aby poinformować komputer, że nie chcesz, aby następny ciąg znajdował się w nowej linii. Rozważ następujący scenariusz. 1. Są to obiekty łańcuchowe, jeśli uzyskamy wartość zmiennoprzecinkową poprzez dane wejściowe użytkownika za pośrednictwem terminala, a także odczytanie jej z pliku. W rezultacie musimy jawnie przekonwertować je na zmiennoprzecinkowe, aby przeprowadzić niezbędne operacje, takie jak dodawanie, mnożenie i tak dalej.Które metody formatowania w Pythonie 3 umożliwiają wielokrotne podstawienia i formatowanie wartości?
2. Ciąg można sformatować za pomocą wielu par nawiasów klamrowych. Jeśli wymagana jest inna zamiana zmiennej w długim ciągu, można dodać drugi zestaw nawiasów klamrowych i przekazać drugą wartość do procedury.
3. Funkcja format() w Pythonie przyjmuje dowolną liczbę parametrów. Jednak jest on przede wszystkim podzielony na następujące dwa rodzaje parametrów.
a. Parametry pozycyjne to lista parametrów, które można pobrać, umieszczając indeks parametru w nawiasach klamrowych (indeks).
b. Parametry słów kluczowych — jest to lista parametrów klucz=wartość, do których można uzyskać dostęp za pomocą klucza parametru w nawiasach klamrowych.
4. Metoda format() zwraca ciąg, który został sformatowany. Funkcja format() odczytuje typ dostarczonych jej argumentów i formatuje je zgodnie z kodami formatu w ciągu. Jak drukować bez znaku nowej linii w Pythonie 3?
print('Witaj!', end = ')
W takim przypadku w tym samym wierszu pojawi się każda kolejna funkcja drukowania. Czy w Pythonie możemy przekonwertować ciąg na pływający?
2. Metoda float() w Pythonie może być użyta do konwersji ciągu znaków na float. Jest to wbudowana funkcja do konwersji liczby zmiennoprzecinkowej na obiekt. Wewnętrznie funkcja float() wywołuje funkcję __float__() dostarczonego obiektu.