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