Мини-язык форматирования
Мини-язык применяется при форматировании строк и позволяет управлять представлением значений.
Инструкции (спецификации) мини-языка могут передаваться напрямую встроенной функции 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
В разделе «Синтаксис»:
Выражения
Инструкции/операторы
На заметку
Читайте нас в Twitter. Ссылка в самом низу страницы.