Сообщить об ошибке.

Функция format() в Python, форматирует значение переменной

Форматирует значение переменной для вывода на печать

Синтаксис:

format(value, format_spec)

Внимание! Ссылка для тех, кто ищет метод форматирования строки str.format().

Параметры:

  • value - форматируемое значение,
  • format_spec - спецификации формата 'Mini-Language'.

Возвращаемое значение:

  • строка, отформатированная в соответствии с форматом 'Mini-Language'.

Описание:

Функция format() преобразует переданное значение в отформатированную строку, в соответствии с спецификацией формата Mini-Language, которое задается в необязательном аргументе format_spec.

Интерпретация format_spec будет зависеть от типа значения переданного функции аргумента. По умолчанию format_spec пустая строка, которая обычно дает тот же эффект, что и вызов функции str(value).

Спецификация формата Mini-Language:

Общая форма спецификатора стандартного формата:

format_spec     ::=  [[fill]align][sign][z][#][0][width][grouping_option][.precision][type]
fill            ::=  <any character>
align           ::=  "<" | ">" | "=" | "^"
sign            ::=  "+" | "-" | " "
width           ::=  digit+
grouping_option ::=  "_" | ","
precision       ::=  digit+
type            ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

Изменено в Python 3.10: установка '0' перед полем width больше не влияет на выравнивание строк по умолчанию.Изменено в Python 3.11: добавлена ​​опция 'z'.

Если указано допустимое значение выравнивания align, то ему может предшествовать символ заполнения fill, который может быть любым символом и по умолчанию равен пробелу, если он опущен. Невозможно использовать литеральную фигурную скобку ('{' или '}') в качестве символа заполнения в форматированном строковом литерале или при использовании метода str.format(). Однако можно вставить фигурную скобку с вложенным замещающим полем. Это ограничение не влияет на функцию format().

Опция # приводит к использованию "альтернативной формы" для преобразования. Альтернативная форма определяется по-разному для разных типов. Этот параметр действителен только для целых, плавающих и сложных типов. Для целых чисел, когда используется двоичный, восьмеричный или шестнадцатеричный вывод, эта опция добавляет к выходному значению соответствующий префикс '0b', '0o', '0x' или '0X'. Для чисел с плавающей запятой и сложных альтернативная форма приводит к тому, что результат преобразования всегда содержит символ десятичной точки, даже если за ним не следуют цифры. Обычно символ десятичной точки появляется в результате этих преобразований только в том случае, если за ним следует цифра. Кроме того, для преобразований 'g' и 'G' конечные нули не удаляются из результата.

Опция width - десятичное целое число, определяющее минимальную общую ширину поля, включая все префиксы, разделители и другие символы форматирования. Если не указано, то ширина поля будет определяться содержимым.

Если явное выравнивание не задано, то перед полем ширины width ставится нулевой ('0') символ, что позволяет использовать знаковое заполнение нулями для числовых типов. Это эквивалентно символу заполнения fill='0' с типом выравнивания align='='.

  1. Выравнивание:

    • < - Левое выравнивание результата (в пределах доступного пространства);
    • > - Выравнивает результат по правому краю (в пределах доступного пространства);
    • ^ - Выравнивает результат по центру (в пределах доступного пространства);
    • = - Помещает результат в крайнее левое положение;
  2. Знаки, только для чисел:

    • + - знак плюс;
    • - - знак минус только для отрицательных значений;
    • пробел ' ' - указывает, что перед положительными числами следует использовать начальный пробел, а перед отрицательными - знак минус.

    Опция 'z' (добавлена в Python 3.11) преобразует отрицательные нулевые значения с плавающей запятой в положительные нули после округления до точности формата. Этот параметр действителен только для типов представления с плавающей запятой.

  3. Разделители десятков, только для чисел:

    • , - Использовать запятую в качестве разделителя тысяч;
    • _ - Использовать символ подчеркивания в качестве разделителя тысяч;
  4. Точность:

    • .число - количество цифр выводимых после фиксированной точки или количество символов в строке;

      >>>format(1, 'f')  
      '1.000000'
      >>>format(10, '.2f')
      '10.00'
      >>>format('format', '.2')
      'fo'
      
  5. Тип форматируемого объекта:

    • s - строка, можно не указывать, используется по умолчанию;
    • b - двоичный формат;
    • с - преобразует целое число в символ Unicode;
    • d - десятичный формат;
    • e - научный формат, со строчной буквой e;
    • E - научный формат, с E верхним регистром;
    • f - формат чисел с плавающей запятой;
    • F - формат чисел с плавающей запятой, верхний регистр;
    • g - общий формат, нижний регистр;
    • G - общий формат, верхний регистр;
    • o - Восьмеричный формат;
    • x - шестнадцатеричный формат, нижний регистр;
    • X - шестнадцатеричный формат, верхний регистр;
    • n - формат целых чисел;
    • %- Процентный формат. Умножает число на 100 и использует f для вывода. В конце ставится %;

Общий вид инструкции format_spec:
заполнитель|выравнивание|знак|#|размер строки|разделитель десятков|.точность|тип

Пример: format(1000.5368, '~>+15,.2f'), где '~>+15,.2f' - формат Mini-Language.

  • ~ - заполнитель
  • > - выравнивание
  • + - знак
  • 15 - размер итоговой строки в символах
  • , - разделитель десятков
  • .2 - точность, количество выводимых цифр после запятой
  • f - тип,

Пример выведет отформатированную строку: '~~~~~~+1,000.54'

Примеры форматирования значений переменных.

>>> format(5)
'5'
>>> format(5, '.1f')
'5.0'
>>> format(5, '*^10.2f')
'***5.00***'
>>> format(1000, '10,d')
'     1,000'
>>> format('Привет', '>10.3')
'       При'
>>> format(1000, '#>+10,.2f')
' +1,000.00'
>>>format(1000.5368, '~>+15,.2f')
'~~~~~~+1,000.54'