Мини-язык применяется при форматировании строк и позволяет управлять представлением значений.
Инструкции (спецификации) мини-языка могут передаваться напрямую встроенной функции format().

Большинство встроенных типов использует инструкции, описанные ниже. Некоторые типы форматирования поддерживаются только числовыми типами.

На заметку
Пустая строка формата ' ' производит тот же эффект, что и применение к значению функции str(), в то время как не пустая строка обычно модифицирует вывод каким-либо образом.

Общий вид инструкции: [[заполнение]равнение][знак]['#']['0'][минразмер][',']['.'точность][тип].

1.Заполнение


Заполнение можно указать, если указано равнение. В качестве заполнения может выступать любой символ. Если символ не указан, то будет использован ' ' (пробел).

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

2. Равнение


Равнение может быть указано следующими способами:

<Равнение влево. Используется по умолчанию для большинства объектов.
Равнение вправо. Используется по умолчанию для чисел.
=Для чисел. Добавляет отступ после знака (если есть), но перед числом. Пример: +000000120. Становится вариантом по умолчанию, если 0 предшествует длине.
^Центровка.

На заметку
Равнение будет действовать только, если указан минразмер и длина подставляемого значения меньше него.

    '{:+<8}'.format('some')  # 'some++++'
'{:+>8}'.format('some') # '++++some'
'{:+^8}'.format('some') # '++some++'
'{:+=8}'.format(-5) # '-++++++5'

3. Знак


Знак используется только для числовых типов:

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

    '{:+}'.format(5)  # '+5'
'{:+}'.format(-5) # '-5'
'{:-}'.format(5) # '5'
'{:-}'.format(-5) # '-5'
'{: }'.format(5) # ' 5'
'{: }'.format(-5) # '-5'

4. Альтернативное представление


# — использовать альтернативную форму представления. Разные типы предлагают разные альтернативные формы. Опция доступна для целых, чисел с плавающей запятой, комплексных и десятичных.

  • Для целых, когда используются двоичная восьмеричная и шестнадцатеричная формы, опция добавляет префиксы 0b, 0o и 0x соответственно.
  • Для чисел с плавающей запятой, комплексных и десятичных альтернативная форма подразумевает наличие точки (разделителя), даже если за ней не следуют цифры. В обычной форме разделитель ставится, только если за ним следует цифра. Кроме того, для преобразований типа g и G (см. ниже) нули в конце числа не отсекаются.

    '{:b}'.format(42)  # '101010'
'{:#b}'.format(42) # '0b101010'

'{:x}'.format(42) # 2a
'{:#x}'.format(42) # '0x2a'

'{:o}'.format(42) # '52'
'{:#o}'.format(42) # '0o52'

5. Тысячный разделитель


+py2.7 +py3.1 , — использовать запятую в качестве тысячного разделителя. Чтобы использовать разделитель, заданный локалью, используйте тип преобразования целых n (см. ниже). Смотрите также PEP 378.

    '{:}'.format(1000000)  # '1000000'
'{:,}'.format(1000000) # '1,000,000'

6. Ведущие нули


0 — Если не задано равнение, то нуль перед минразмер включает добавление перед числом нулей, зависящее от его знака.

    '{:04}'.format(5)  # '0005'
'{:04}'.format(-5) # '-005'

# То же самое с использованием равнения:
'{:0=4}'.format(5) # '0005'
'{:0=4}'.format(-5) # '-005'

7. Минимальный размер


Минразмер — это целое, задающее минимальный размер (длину) значения. Если не указыается, то будет использована длина самого значения.

8. Точность


  • Для чисел с плавающей запятой — это количество цифр, которые требуется вывести после десятичного разделителя (для форматирования f и F), либо до и после разделителя (для форматирования g и G).
  • Для целых точность не обрабатывается.
  • Для прочих типов — это количество знаков, которые требуется взять из значения.

    '{:f}'.format(5)  # '5.000000'
'{:.2f}'.format(5) # '5.00'
'{:.2s}'.format('some') # 'so'

9. Тип


Тип — это тип представления, который требуется использовать.

Типы для строк

sСтрока. Этот тип используется по умолчнию, его можно не указывать.
NoneТо же, что и s.

Типы для целых

bДвоичный вид. Число по основанию 2.
cСимвол. Представляет целое в виде соответствующего Unicode-символа.
dДесятичная форма. Число по основанию 10.
oВосьмеричная форма. Число по основанию 8.
x, XШестнадцатеричная форма. Число по основанию 16. Буквы в нижнем и в верхнем регистре соответственно.
nЧисло. То же, что и d, только символы-разделители будут зависеть от настроек используемой локали.
NoneТо же, что и d.

На заметку
В дополнение к описанным выше типам к целым могут быть применены типы для чисел с плавающей запятой, описанные ниже. В этом случае целое сначала будет приведено с использованием float().

Типы для чисел с плавающей запятой и для десятичных

e, EС плавающей запятой (нижний и верхний регистр соответственно). Экспоненциальный формат. ※
f, FС фиксированной запятой (нижний и верхний регистр для nan и inf соответственно). ※
g, GОбщий вид (нижний и верхний регистр соответственно). Для заданной точности p >= 1, округляет число до p значащих цифр и представляет результат, используя либо число с фиксированной запятой, либо научный формат, в зависимости от величины этого числа. Точность 0 трактуется эквивалентно точности 1. ※ ※※
nЧисло. То же, что и g, только символы-разделители будут зависеть от настроек используемой локали.
%Процент. Умножает число на 100 и использует f для вывода. В конце ставится %.
NoneПохоже на g, за исключением случая, когда используется вид с фиксированной запятой, при этом за разделителем следует по меньшей мере одна цифра. Точность по умолчанию в этом случае устанавливается достаточной для представления заданного значения. Общий эффект соответствует применению str(), с применением прочих модификаций формата.

※ Точность по умолчанию: 6.

※※ Правила приведения. Пусть результат отформатирован при помощи e и точность p-1 использует экспоненту exp. Если -4 <= exp < p, то число будет отформатировано при помощи f с точностью p-1-exp. Иначе число будет отформатировано при помощи e с точностью p-1. В обоих случаях незначащие нули справа обрубаются. Кроме того, удаляется разделитель, если за ним не следуют цифры. При этом вне зависимости от точности плюс бесконечность, минус бесконечность, плюс нуль, минус нуль и nan будут представлены соответственно: inf, -inf, 0, -0, nan.
Синонимы поиска: Мини-язык форматирования, формат, %d, %s, printf
В разделе «Синтаксис»: Выражения Инструкции/операторы
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.