====== Подстановка в строки ======
===== Методы подстановки в 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'