Возвращает копию строки, отформатированную указанным образом.
str.format(*args, **kwargs)
-> str
args -- Позиционные аргументы.
kwargs -- Именованные аргументы.

Строка, для которой вызывается данный метод может содержать как обычный текст, так и маркеры в фигурных скобках {}, которые следует заменить. Обычный текст, вне скобок будет выведен как есть без именений.

Метод возвращает копию строки, в которой маркеры заменены текстовыми значениями из соответствуюих аргументов.

Общий вид маркера: '{'[наименование('.'аттр|'['индекс']')*] ['!'приведение] [':'формат] '}'

На заметку
Если требуется, чтобы результирующая строка содержала скобку, то этот спецсимвол можно экранировать при помощи его удвоения: {{ и }}.

1. Наименование состоит из имени аргумента (либо его индекса). Числовой индекс при этом указывает на позиционный аргумент; имя же указывает на именованный аргумент.

Начиная с +py2.7 +py3.1, если используются числа и они составляют последовательноть (0, 1, 2...), то они могут быть опущены разом (но не выборочно). Например, {}-{}-{} и {0}-{1}-{2} эквивалентны.

Внимание
Существуют ограничения на наименования, используемые для адресации именованных аргументов. Например, не удасться адресовать 10 или :-].

'{}-{}-{}'.format(1, 2, 3)  # '1-2-3'
'{}-{}-{}'.format(*[1, 2, 3]) # '1-2-3'
'{one}-{two}-{three}'.format(two=2, one=1, three=3) # '1-2-3'
'{one}-{two}-{three}'.format(**{'two': 2, 'one': 1, 'three': 3}) # '1-2-3'

2. После наименования может следовать любое количество выражений доступа к атрибуту или адресации по индексу.

  • Атрибут объекта адресуется при помощи . (точки). Задействуется getattr().
  • Доступ к элементу контейнера при помощи [] (квадратных скобок). Задействуется __getitem__().

class Temp(object): 
attr = 3

obj = {'one': {'sub': 1}, 'two': [10, 2, 30], 'three': Temp()}

'{one[sub]}-{two[1]}-{three.attr}'.format(**obj) # '1-2-3'

3. Приведение используется для приведения типов перед форматированием.
Обычно возврат отформатированого значения возлагается на метод __format__(), однако бывают случаи, что требуется произвести принудительное приведение, например, к строке, в обход имеющейся реализации. Логика форматирования по умолчанию обходится при помощи приведения значения к строке перед вызовом __format__().

Поддерживаются три флага приведения:
!sВызывает str()
!rВызывает repr()
!a+py3.0 Вызывает ascii().

class Demo:  # Python 3

def __str__(self):
return 'str'

def __repr__(self):
return 'repr'

def __ascii__(self):
return 'ascii'

def __format__(self, format_spec):
return 'format'


demo = Demo()
'{!s}-{!r}-{!a}-{}'.format(demo, demo ,demo, demo) # 'str-repr-ascii-format'

4. Формат содержит определение того как должно быть представлено значение, включая информацию о длине, выравнивании, дополнении строки, точности для чисел итому подобное. Каждый тип может иметь свой мини-язык форматирования.

Большинство встроенных типов использует общий мини-язык.

Для поддержки динамического составления формата, его определение может содержать вложенные маркеры для замены. При этом допускается только один уровень вложенности. Вложенные маркеры заменяются значениями до того как будет интерпретирована строка формата.

'-{:{fill}{align}8}-'.format('some', fill='+', align='^')  # '-++some++-'

На заметку
Дополнительная информация о формате доступна в разделе «Мини-язык форматирования».


Синонимы поиска: str.format, str, format, формат, форматирование
На заметку
Зарегистрированные пользователи могут добавлять Видео.