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