Подстановка в строки
Методы подстановки в Python
- В стиле printf:
"Привет %s!" % ("мир",)
- В стиле format:
"Привет {}!".format("мир")
- В стиле f-строк:
m = "мир"; f"Привет {m}!"
Формирование строк в стиле printf
У типа str
предусмотрен оператор %
который принимает вторым аргументом кортеж и подставляет его элементы на указанные в шаблоне места.
t = "%s = %.2f"
s = t % ("A", 42)
# s == 'A = 42.00'
Популярные форматы
Формат | Ожидаемый тип | Эффект | Варианты с модификаторами |
---|---|---|---|
%s | str | Подстановка строки | |
%d | int | Подстановка целого числа | %06d , %#4d , %+02d |
%x | int | Подстановка числа в шестнадцатеричной системе | %04x , %#x , %+06x |
%f | float | Подстановка числа с плавающей точкой | %0.4f , %8.4f , %+8.2f , %+08.2f |
%e | float | Экспоненциальный формат | %1.6e |
Примеры с использованием модификаторов
"%6d" % 42 # ' 42'
"%06d" % 42 # '000042'
"%.2f" % 3.14159 # '3.14'
"%06.2f" % 3.14159 # '003.14'
"%#6.2f" % 3.14159 # ' 3.14'
"%+6.3f" % 3.14159 # '+3.142'
"%+1.4e" % 3.14159 # '+3.1416e+00'
Формирование строк в стиле format
У типа str
есть специальный метод format
:
s = 'Привет, {}!'
w = s.format('мир')
#w == 'Привет, мир!'
Преимущества:
- Автоматическое приведение типов
- Возможность передачи параметров по имени и по номеру (в том числе повторение)
Форматы аналогичны %
но указываются после символа :
перед которым может стоять имя аргумента:
s = 'Power {power:.2f} State {state}'
w = s.format(state = "Ready", power = 3.14159)
#w == 'Power 3.14 State Ready'
Формирование строк в стиле f-строк
Строки могут быть созданы со специальным модификатором f
который позволяет напрямую вставлять переменные в строку:
q = 'мир'
s = f'Привет, {q}!'
#s == 'Привет, мир!'
Преимущества:
- Автоматическое приведение типов
- Отсутствие дублирования имен переменных в шаблоне и в программе
Форматы аналогичны %
но указываются после символа :
, как и в подстановках через format
.
power = 3.14159
state = "Ready"
w = f'Power {power:.2f} State {state}'
#w == 'Power 3.14 State Ready'
Модификатор f
можно сочетать с модификатором r
, чтобы не обрабатывать спецсимволы.
filename = 'test'
fullpath = fr'c:\test\{filename}.txt'
data/printf.txt · Последнее изменение: 2023/02/02 22:46 — root
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International