Napisy i obiekty Unicode posiadają dodatkową operację wbudowaną:
operator % (modulo). Operację tę nazywamy również
formatowaniem lub interpolacją. Po zastosowaniu
format % wartości (gdzie format jest napisem
lub obiektem Unicode) elementy formatujące wyspecyfikowane w
format są zastąpione elementami z wartości. Efekt jest
podobny do zastosowania funkcji sprintf() języka C. Jeśli
format jest obiektem Unicode, lub jeśli jakikolwiek obiekt poddany
konwersji z użyciem symbolu %s jest obiektem Unicode, wynik
również będzie obiektem Unicode.
Jeśli format wymaga jednego argumentu, wartości może być pojedyńczym obiektem, nie krotką.2.8 W przeciwnym wypadku wartości musi być krotką zawierającą dokładnie taką ilość elementów, jaka jest zdefiniowana z napisie formatującym lub pojedyńczym obiektem odwzorowującym (na przykład słownikiem).
Element określający konwersję składa się z dwóch lub większej ilości znaków i posiada następujące składniki, które muszą wystąpić w następującej kolejności:
(nazwa)).
Jeśli prawy argument operacji jest słownikiem (lub innym rodzajem odwzorowania), format napisu musi zawierać w nawiasie nazwę klucza z tego słownika. Zastosowany klucz określa element odwzorowania, którego wartość ma zostać sformatowana w napisie wynikowym. Na przykład:
>>> print '%(jezyk)s ma %(#)03d rodzaje cudzysłowów.' % \
{'jezyk': "Python", "#": 2}
Python ma 002 rodzaje cudzysłowów.
W tym przykładzie nie mógł wystąpić identyfikator *,
ponieważ wymaga on listy parametrów w postaci sekwencji.
Flagi konwersji, które mogą być użyte w konwersji:
| Flaga | Znaczenie |
|---|---|
| Konwersja używa "alternatywnej formy" (patrz dalej). | |
| Wypełnienie zerami. | |
| Wyrównanie do lewej (jeśli zastosowany wraz z formatowaniem "0" spowoduje zignorowanie tego formatowania). | |
| (spacja) Należy pozostawić spację przed liczbą dodatnią (lub pustym napisem) w wyniku konwersji ze znakiem. | |
| Umieszczenie symbolu znaku ("+" lub "-") (anuluje flagę "spacji"). |
Opcjonalny modyfikator długości może być jednym z symboli: h, l,
lub L, ale zostanie zignorowany, ponieważ nie jest potrzebny
w Pythonie.
Typy konwersji:
| Konwersja | Znaczenie | Uwagi |
|---|---|---|
| Liczba całkowita dziesiętna ze znakiem. | ||
| Liczba całkowita dziesiętna ze znakiem. | ||
| Liczba ósemkowa bez znaku. | (1) | |
| Liczba dziesiętna bez znaku. | ||
| Liczba szesnastkowa bez znaku (małe litery). | (2) | |
| Liczba szesnastkowa bez znaku (wielkie litery). | (2) | |
| Liczba zmiennoprzecinkowa w formacie wykładniczym (małe litery). | ||
| Liczba zmiennoprzecinkowa w formacie wykładniczym (wielkie litery). | ||
| Liczba zmiennoprzecinkowa w formacie dziesiętnym | ||
| Liczba zmiennoprzecinkowa w formacie dziesiętnym | ||
| Zastosuj konwersję "e" jeśli wykładnik jest większy niż -4 lub mniejszy od wartości precyzji, w przeciwnym wypadku zastosuj "f". | ||
| Zastosuj konwersję "E" jeśli wykładnik jest większy niż -4 lub mniejszy od wartości precyzji, w przeciwnym wypadku zastosuj "F". | ||
| Pojedyńczy znak (liczba całkowita lub napis jednoznakowy). | ||
| Napis (konwertuje jakikolwiek obiekt Pythona z wykorzystaniem funkcji repr()). | (3) | |
| Napis (konwertuje jakikolwiek obiekt Pythona z wykorzystaniem funkcji str()). | ||
| Brak konwersji, wynik zawiera znak "%". |
Uwagi:
'0x' lub
'0X' (w zależności od tego, czy wykorzystaliśmy format
"x", czy "X").
%r zostało dodane w wersji 2.0 Pythona.
Napisy Pythona posiadają wartość długości, w związku z tym konwersja
%s nie zakłada zakończenia napisu znakiem '\0'.
Dla względów bezpieczeństwa precyzja liczb zmiennoprzecinkowych jest
obcinana do 50. Konwersja %f dla liczb a wartości bezwzględnej
powyżej 1e25 są zastępowane przez konwersje %g.2.9 Wszystkie inne błędy wywołują wyjątki.
Dodatkowe operacja na napisach są zdefiniowane w modułąch standardowych string oraz re.