Форматирование строк. Оператор %
Иногда (а точнее, довольно часто) возникают ситуации, когда нужно сделать строку, подставив в неё некоторые данные, полученные в процессе выполнения программы (пользовательский ввод, данные из файлов и т. д.). Подстановку данных можно сделать с помощью форматирования строк. Форматирование можно сделать с помощью оператора %, и метода 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' | Строка (как обычно воспринимается пользователем). |
| '%%' | Знак '%'. |
Спецификаторы преобразования записываются в следующем порядке:
- %.
- Ключ (опционально), определяет, какой аргумент из значения будет подставляться.
- Флаги преобразования.
- Минимальная ширина поля. Если *, значение берётся из кортежа.
- Точность, начинается с '.', затем - желаемая точность.
- Модификатор длины (опционально).
- Тип (см. таблицу выше).
>>> 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'


LETPY.COM