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