Форматирование строк. Оператор %

Иногда (а точнее, довольно часто) возникают ситуации, когда нужно сделать строку, подставив в неё некоторые данные, полученные в процессе выполнения программы (пользовательский ввод, данные из файлов и т. д.). Подстановку данных можно сделать с помощью форматирования строк. Форматирование можно сделать с помощью оператора %, и метода format.

Метод format является наиболее правильным, но часто можно встретить программный код с форматированием строк в форме оператора %.

Форматирование строк с помощью оператора %

Если для подстановки требуется только один аргумент, то значение - сам аргумент:

>>> 'Hello, %s!' % 'Vasya'
'Hello, Vasya!'

А если несколько, то значением будет являться кортеж со строками подстановки:

>>> '%d %s, %d %s' % (6, 'bananas', 10, 'lemons')
'6 bananas, 10 lemons'

Теперь, а почему я пишу то %d, то %s? А всё зависит от того, что мы используем в качестве подстановки и что мы хотим получить в итоге.

ФорматЧто получится
'%d', '%i', '%u'Десятичное число.
'%o'Число в восьмеричной системе счисления.
'%x'Число в шестнадцатеричной системе счисления (буквы в нижнем регистре).
'%X'Число в шестнадцатеричной системе счисления (буквы в верхнем регистре).
'%e'Число с плавающей точкой с экспонентой (экспонента в нижнем регистре).
'%E'Число с плавающей точкой с экспонентой (экспонента в верхнем регистре).
'%f', '%F'Число с плавающей точкой (обычный формат).
'%g'Число с плавающей точкой. с экспонентой (экспонента в нижнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.
'%G'Число с плавающей точкой. с экспонентой (экспонента в верхнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.
'%c'Символ (строка из одного символа или число - код символа).
'%r'Строка (литерал python).
'%s'Строка (как обычно воспринимается пользователем).
'%%'Знак '%'.

Спецификаторы преобразования записываются в следующем порядке:

  1. %.
  2. Ключ (опционально), определяет, какой аргумент из значения будет подставляться.
  3. Флаги преобразования.
  4. Минимальная ширина поля. Если *, значение берётся из кортежа.
  5. Точность, начинается с '.', затем - желаемая точность.
  6. Модификатор длины (опционально).
  7. Тип (см. таблицу выше).
>>> print ('%(language)s has %(number)03d quote types.' % {"language": "Python", "number": 2})
Python has 002 quote types.

Флаги преобразования:

ФлагЗначение
"#"Значение будет использовать альтернативную форму.
"0"Свободное место будет заполнено нулями.
"-"Свободное место будет заполнено пробелами справа.
" "Свободное место будет заполнено пробелами справа.
"+"Свободное место будет заполнено пробелами слева.
>>> '%.2s' % 'Hello!'
'He'
>>> '%.*s' % (2, 'Hello!')
'He'
>>> '%-10d' % 25
'25        '
>>> '%+10f' % 25
'+25.000000'
>>> '%+10s' % 'Hello'
'     Hello'
Для вставки кода на Python в комментарий заключайте его в теги <pre><code class="python3">Ваш код</code></pre>
Опечатка в тексте:
Послать сообщение об ошибке автору?