format(value, format_spec)
Внимание! Ссылка для тех, кто ищет метод форматирования строки str.format()
.
value
- форматируемое значение,format_spec
- спецификации формата '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='='
.
Выравнивание:
<
- Левое выравнивание результата (в пределах доступного пространства);>
- Выравнивает результат по правому краю (в пределах доступного пространства);^
- Выравнивает результат по центру (в пределах доступного пространства);=
- Помещает результат в крайнее левое положение;Знаки, только для чисел:
+
- знак плюс;-
- знак минус только для отрицательных значений;' '
- указывает, что перед положительными числами следует использовать начальный пробел, а перед отрицательными - знак минус. Опция 'z'
(добавлена в Python 3.11) преобразует отрицательные нулевые значения с плавающей запятой в положительные нули после округления до точности формата. Этот параметр действителен только для типов представления с плавающей запятой.
Разделители десятков, только для чисел:
,
- Использовать запятую в качестве разделителя тысяч;_
- Использовать символ подчеркивания в качестве разделителя тысяч;Точность:
.число
- количество цифр выводимых после фиксированной точки или количество символов в строке;
>>>format(1, 'f') '1.000000' >>>format(10, '.2f') '10.00' >>>format('format', '.2') 'fo'
Тип форматируемого объекта:
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'