Мини-язык форматирования
Мини-язык применяется при форматировании строк и позволяет управлять представлением значений.
Инструкции (спецификации) мини-языка могут передаваться напрямую встроенной функции format().
Большинство встроенных типов использует инструкции, описанные ниже. Некоторые типы форматирования поддерживаются только числовыми типами.
Общий вид инструкции:
Заполнение можно указать, если указано равнение. В качестве заполнения может выступать любой символ. Если символ не указан, то будет использован
Равнение может быть указано следующими способами:
Знак используется только для числовых типов:
+py2.7 +py3.1
Минразмер — это целое, задающее минимальный размер (длину) значения. Если не указыается, то будет использована длина самого значения.
Тип — это тип представления, который требуется использовать.
Типы для строк
Типы для целых
Типы для чисел с плавающей запятой и для десятичных
※ Точность по умолчанию: 6.
※※ Правила приведения. Пусть результат отформатирован при помощи
Большинство встроенных типов использует инструкции, описанные ниже. Некоторые типы форматирования поддерживаются только числовыми типами.
На заметку
Пустая строка формата
' ' производит тот же эффект, что и применение к значению функции 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
В разделе «Синтаксис»:
Выражения
Инструкции/операторы
На заметку
Зарегистрированные пользователи могут добавлять Книги.