Format: примеры (PYTHON)

Работа с функцией format для форматирования данных в Python
Раздел: Встроенные функции, Форматирование строк
format(value[, format_spec]): str

Базовая информация о функции format

Функция format() в Python предназначена для форматирования строк и других объектов. Ее используют, когда требуется преобразовать значение в строку с определенным форматированием, например, для вывода чисел с заданной точностью, выравнивания текста или представления данных в специфическом формате.

Синтаксис функции: format(value, format_spec=''). Первый аргумент value - объект, который нужно отформатировать. Второй аргумент format_spec - необязательная строка, задающая спецификацию форматирования. Если она опущена, функция эквивалентна вызову str(value). Возвращаемое значение - строка, представляющая отформатированный объект.

Спецификация формата имеет общий вид: [[fill]align][sign][#][0][width][grouping_option][.precision][type]. Каждая часть отвечает за аспект форматирования:

  • fill: символ-заполнитель (по умолчанию пробел).
  • align: выравнивание: < (влево), > (вправо), ^ (по центру), = (знак и число разделяются заполнителем).
  • sign: отображение знака: + (всегда показывать), - (только отрицательные, по умолчанию), пробел (пробел для положительных).
  • #: альтернативная форма вывода (например, префикс 0b для двоичных чисел).
  • 0: дополнение нулями (эквивалентно fill со значением 0 и align со значением =).
  • width: минимальная ширина поля.
  • grouping_option: разделитель групп разрядов: _ или ,.
  • .precision: точность для чисел с плавающей точкой или максимальная длина для строк.
  • type: тип представления: b (двоичный), c (символ), d (десятичный), e или E (экспоненциальный), f или F (с фиксированной точкой), g или G (общий), n (числовой с локализацией), o (восьмеричный), s (строковый), x или X (шестнадцатеричный), % (процентный).

Короткие примеры использования

Форматирование целых чисел:

print(format(42, 'd'))
42
print(format(42, '10d'))
        42
print(format(42, '<10d'))
42        
print(format(42, '010d'))
0000000042

Форматирование чисел с плавающей точкой:

print(format(3.14159, '.2f'))
3.14
print(format(3.14159, '10.2f'))
      3.14
print(format(3.14159, 'e'))
3.141590e+00

Форматирование строк:

print(format('hello', '10'))
hello     
print(format('hello', '^10'))
  hello   
print(format('hello', '*^10'))
**hello***

Похожие функции в Python

В Python существует несколько способов форматирования строк, каждый со своими особенностями.

f-строки (доступны с Python 3.6): позволяют встраивать выражения напрямую в строковые литералы через префикс f. Они обладают высокой читаемостью и производительностью. Пример: f'Значение: {x:10.2f}'.

Метод str.format(): более гибкий подход, чем функция format(), поддерживает именованные и позиционные аргументы. Пример: '{:.2f}'.format(3.14159).

Оператор %: устаревший способ, основанный на синтаксисе языка C. Пример: '%10.2f' % 3.14159.

Функция format() полезна, когда нужно отформатировать отдельное значение без создания строки. В контексте строкового форматирования обычно предпочтительнее f-строки или метод str.format() для сложных шаблонов.

Аналоги в других языках программирования

JavaScript: метод toLocaleString() для чисел и Intl.NumberFormat для сложного форматирования. Пример: number.toLocaleString('ru-RU', { minimumFractionDigits: 2 }).

Java: класс String.format(), использующий спецификаторы в стиле C. Пример: String.format("%.2f", 3.14159).

C#: метод ToString() с параметрами или String.Format(). Пример: 3.14159.ToString("F2").

PHP: функция number_format() для чисел и sprintf() для общего форматирования. Пример: number_format(3.14159, 2).

SQL: функции форматирования зависят от СУБД, например, FORMAT() в MySQL. Пример: SELECT FORMAT(1234567.89, 2).

Lua: отсутствует встроенная функция форматирования, но используется string.format() из стандартной библиотеки, аналогичная функции C. Пример: string.format("%.2f", 3.14159).

Golang: пакет fmt с функцией Sprintf(). Пример: fmt.Sprintf("%.2f", 3.14159).

Kotlin: метод format() у строк или шаблоны строк. Пример: "%.2f".format(3.14159).

Типичные ошибки

Использование неверного спецификатора для типа данных:

print(format('text', 'd'))
ValueError: Unknown format code 'd' for object of type 'str'

Несоответствие количества аргументов:

print(format(3.14159, '.2f', 'extra'))
TypeError: format() takes at most 2 arguments (3 given)

Некорректная спецификация формата:

print(format(10, '5.2f'))
ValueError: Precision not allowed in integer format specifier

Ошибка при работе с неформатируемыми объектами:

class CustomClass: pass
print(format(CustomClass(), '10'))
TypeError: unsupported format string passed to CustomClass.__format__

Изменения в последних версиях Python

В Python 3.7 добавлена поддержка описателя __format__ для объектов dataclass через вызов dataclasses.is_dataclass().

В Python 3.8 представлен спецификатор = для f-строк, который выводит и выражение, и его значение, но это не затрагивает напрямую функцию format().

Начиная с Python 3.11, оптимизирована производительность функции format() для некоторых встроенных типов, например, целых чисел.

Расширенные примеры применения

Форматирование с разделителями групп разрядов:

Пример python
print(format(1234567, ','))
print(format(1234567, '_'))
1,234,567
1_234_567

Использование альтернативных форм:

Пример python
print(format(42, '#b'))
print(format(42, '#x'))
0b101010
0x2a

Форматирование знака:

Пример python
print(format(10, '+'))
print(format(-10, '+'))
print(format(10, ' '))
print(format(-10, ' '))
+10
-10
 10
-10

Форматирование символов Unicode:

Пример python
print(format(65, 'c'))
A

Форматирование процентов:

Пример python
print(format(0.85, '.1%'))
85.0%

Использование объекта для форматирования:

Пример python
class Money:
    def __init__(self, amount):
        self.amount = amount
    def __format__(self, format_spec):
        return format(self.amount, format_spec) + ' USD'

m = Money(1000)
print(format(m, ','))
1,000 USD

Форматирование с динамической шириной:

Пример python
width = 15
print(format('text', f'{width}'))
text           

питон format function comments

En
Format Format value