Иногда (а точнее, довольно часто) возникают ситуации, когда нужно сделать строку, подставив в неё некоторые данные, полученные в процессе выполнения программы (пользовательский ввод, данные из файлов и т. д.).
В этом случае для подстановки этих значений можно использовать строковый метод format.
При этом в шаблоне в места подстановок нужно поставить якори вида {}, а в параметры format передать ровно необходимое количество значений.
Однако возможностей у format гораздо больше: кроме непосредственной подстановки в строку возможно применение форматирования в выводимым данным.
Полный список возможностей можно получить непосредственно в документации,
а здесь будет список разумных примеров использования этого метода:
>>> '{}, {}, {}'.format('a', 'b', 'c') 'a, b, c'>>> '{0}, {1}, {2}'.format('a', 'b', 'c') # Можно явно указать индексы'a, b, c'>>> '{2}, {1}, {0}'.format('a', 'b', 'c') # Если индексы указаны явно, то они могут идти в любом порядке'c, b, a'>>> '{0}{1}{0}'.format('abra', 'cad') # И даже повторяться'abracadabra'>>> 'Coordinates: {lat}, {lon}'.format(lat='37.24N', lon='-115.81W') # Можно вместо индексов явно указывать имена'Coordinates: 37.24N, -115.81W'# Выравнивания>>> '{:<30}'.format('left aligned')'left aligned '>>> '{:>30}'.format('right aligned')' right aligned'>>> '{:^30}'.format('centered')' centered '>>> '{:*^30}'.format('centered') # Используем * для заполнения'***********centered***********'# Особый вывод действительных чисел>>> '{:+f}; {:+f}'.format(3.14, -3.14) # Всегда показывать знак'+3.140000; -3.140000'>>> '{: f}; {: f}'.format(3.14, -3.14) # Или выводить пробел, если знака плюса нет' 3.140000; -3.140000'>>> '{:0.2f}; {:0.3f}; {:8.3f}'.format(3.14, -3.14, 179e-4) # Можно выводить фиксированное кол-во значащих цифр'3.14; -3.140; 0.018'# Вывод в двоичной, восьмеричной или шестнадцатиричной системе счисления>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)'int: 42; hex: 2a; oct: 52; bin: 101010'>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) # С префиксом 0x, 0o, 0b'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010' |
f-строки
Начиная с Python 3.6 появился ещё один способ получения строк, в которые вставлены значения некоторых переменных. Кроме того, что этот способ очень хорошо читается, он ещё и самый быстрый. Начнём с примера:
>>> x = 10>>> y = 5>>> print(f"{x} x {y} / 2 = {x * y / 2}")>>> 10 x 5 / 2 = 25.0>>> planets = ["Меркурий", "Венера", "Земля", "Марс"]>>> print(f"Мы живём не планете {planets[2]}")>>> Мы живём не планете Земля |
.format, только необходимо всегда указывать префикс f перед строкой и имена переменных внутри фигурных скобок.
Возможностей того, что можно указывать внутри фигурных скобок достаточно много: pep-0498.