Форматирование строк в стиле printf при помощи оператора интерполяции %.
Строки и unicode реализуют поддержку оператора % (деление по модулю; оператор интерполяции строки), который используется для форматирования строк.

Оператор заменяет маркеры в строке значениями из форматируемого объекта. Подход похож на использование sprintf() в языке Си.

На заметку
Если строка формата представлена в виже unicode, или какой-либо из объектов форматируемый с использованием %s является Unicode-объектом, то результат тоже будет unicode.

Если формат требует лишь одного аргумента, то форматируемый объект может не заключаться в кортеж. В прочих случаях форматируемый объект должен являться кортежем с количеством элементов достаточным для форматирования, либо отображением, например, словарём.

    '%s %d' % ('number', 5)  # 'number 5'
'number %d' % 5 # 'number 5'
'%d%%' % 100 # '100%'

Общий вид маркера: %[(имя)][флаги][минразмер][.точность]тип.

Маркеры замены (спецификаторы преобразования) могут состоять из следущих компонентов в указанном порядке:

1. Символ % указывает на начало маркера;

2. Опция. Имя маркера в скобках, например (somename);

Когда в качестве форматируемого объекта выступает словарь (либо другое отображение) требуется указание имени маркера. Подразумевается, что имя маркера будет совпадать с одним из ключёй отображения.

    '%(left)s выше, чем %(right)s.' % {'left': 'Вася', 'right': 'Петя'}
# Вася выше, чем Петя.

3. Опция. Флаги преобразования, влияющие на результат некоторых типов преобразований;

#Использовать альтернативную форму представления (если доступна для выбранного типа преобразования).
0Добить число нулями.
-Равнение влево. Перекрывает флаг 0, если тот указан.
пробелДобавить пробел перед положительным числом (или пустой строкой).
+Добавить знак числа — + или -. Перекрывает флаг пробел.

    '%04d' % 5  # '-005'
'%04d' % 5 # '0005'

'%4d' % -5 # ' -5'
'%-4d' % -5 # '-5 '

'% d' % 5 # ' 5'
'% d' % -5 # '-5'

'%d' % 5 # '5'
'%+d' % 5 # '+5'

4. Опция. Минимальный размер. Если указан * (астериск), размер будет считан из форматируемого кортежа;

    '%d' % 5  # '5'
'%3d' % 5 # ' 5'
'%*d' % (3, 5) # ' 5'

5. Опция. Точность. Задаётся после . (точки). Если указан * (астериск), размер будет считан из форматируемого кортежа;

    '%f' % 5  # '5.000000'
'%.2f' % 5 # '5.00'
'%.*f' % (2, 5) # '5.00'

6. Опция. Длина. Модификатор длины (h, l, или L) можно указать, но он будет проигнорирован, так как не используется в Питоне %ld то же что и %d.;

7. Тип преобразования.

d / iЗнаковое целое. Десятичный формат.
oЗнаковое восьмеричное. В альтернативной форме добавляется ведущий 0 (ноль), если его нет.
uУстаревший тип, то же что и d. См. PEP-237.
x, XЗнаковое шестнадцатеричное (нижний и верхний регистр соответственно). В альтернативной форме добавляется ведущий 0x 0X, если его нет.
e, EС плавающей запятой (нижний и верхний регистр соответственно). Экспоненциальный формат. ※
f, FС плавающей запятой. Десятичный формат. +py2.7 +py3.1 Данный формат для чисел с абсолютным значением превышающим 1e50 более не заменяется на %g. ※
g, GС плавающей запятой. Использует экспон. формат, если экспонента меньше -4, иначе десятичный. ※※
cОдиночный символ. Может принять целое, либо строку с одним символом.
r+py2.0 Строка. Использует repr(). ※※※
sСтрока. Испольует str(). ※※※
a+py3.0 Строка. Использует ascii(). ※※※
%Используется для получения символа % в результирующей строке.

※ Альтернативная форма всегда будет содержать точку, даже если за ней не следуют цифры. Точность определяет количество знаков после точки — по умолчанию 6 (шесть).

※※ Альтернативная форма всегда будет содержать точку, а нули в конце не будут обрезаны. Точность определяет количество значащих цифр до и после точки — по умолчанию 6 (шесть).

※※※ Точность — максимальное количество символов, которые требуется вывести.

На заметку
Ввиду того, что длина строки в Питоне является признаком объекта, преобразование %s не считает символ \0 окончанием строки.
Синонимы поиска: Форматирование при помощи %, %, modulo, %d, %s, printf
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.