Найти в Дзене

Python. Строковые методы format.(str.format) Спецификаторы. (33.2)

Я поделил описание форматирования строки (str) с помощью строкового метода format на две статьи. В первой статье будет описана процедура форматирования без спецификаторов, во второй статье будет описана процедура форматирования со спецификаторами. Первая часть тут

Метод format со спецификаторами.

Коротенько основные моменты предыдущей части

Синтаксис.

'строка {маркер}'.format(аргументы)

‘строка {маркер}’ – исходная строка(str) в которой все маркеры будут заменены элементами аргумента.

{маркер} – указатель на элемент аргумента которым маркер будет заменен, ограниченный слева и справа фигурными скобками { }. Для более гибкого форматирования, в маркере могут использоваться спецификаторы.

аргумент – набор элементов на которые будет заменены маркеры. Элементами аргумента могут быть, на сколько я понял, любые типы данных Python.

Теперь более подробно о спецификаторах.

Спецификаторы сильно расширяют возможности форматирования. Спецификаторы входят в запись маркера. Все спецификаторы необязательные, я отделил название спецификаторов друг от друга квадратными скобками. Спецификаторы преобразовывают только строку, которая впоследствии заменит маркер, если в исходной строке кроме маркера есть какие-нибудь символы в отформатированной строке они останутся без изменения.

В примере часть исходной строки ‘Танцы на’ не изменится. В свою очередь маркер будет заменен на строку из аргумента - ‘воде ‘, эта строка увеличится и станет длиной 10, строка из аргумента будет выравнена по левому краю и все пустые элементы строки будут заполнены буквой ‘e’ и только после этого форматирования она будет прибавлена к исходной строке.

Поподробнее о спецификаторах.

Синтаксис

{указатель_на_элемент_аргумента:[[заполнение] выравнивание] [знак] [префикс] [0] [минимальная_длина] [.точность] [тип]}

указатель_на_элемент_аргумента – указывает на элемент аргумента на который он будет заменен. После него следует двоеточие.

заполнение – спецификатором заполнение может быть любой один символ кроме } (правой фигурной скобки). Спецификатор заполнение заполняет все свободное место в строке. По умолчанию пробел.

выравнивание – на этом месте могут быть указаны следующие символы

< - выравнивание по левому краю, обозначает, что элемент аргумента будет помещен в начало строки, которой будет заменен маркер,

-2

> - выравнивание по правому краю, обозначает, что элемент аргумента будет помещен в конец строки, которой будет заменен маркер,

-3

^ - выравнивание по середине, обозначает, что элемент аргумента будет помещен в середину строки, которой будет заменен маркер,

-4

= - этот спецификатор доступен только для числовых значений, спецификатор делает промежуток между знаком числа, в случае если он есть, и первой цифрой числа. Используется это для получения числа вида +000000145.

-5

знак - этот спецификатор доступен только для числовых значений, если он есть в записи, то знак числа будет выводится в зависимости от значении спецификатора.

+ - знак числа выводится и для положительного и для отрицательного числа.

-6

- - знак числа выводится только для отрицательного числа

-7

‘ ’ (пробел) – для положительного числа выведется пробел перед числом, для отрицательно числа выведется минус перед числом.

-8

префикс – этот спецификатор доступен только для целых чисел (int). Может принимать следующие значения:

0o – в этом случае число будет преобразовано в восьмеричное.

0b – в этом случае число будет преобразовано в двоичное.

0x – в этом случае число будет преобразовано в шестнадцатеричное. Буквы числа будут в нижнем регистре

0Х – в этом случае число будет преобразовано в шестнадцатеричное. Буквы числа будут в верхнем регистре

-9

0 - Если есть этот спецификатор (спецификатор может быть только нулем), все пустое место в строке будет заполнено нулями. Аналог заполнению равному 0.

-10

минимальная_длина – спецификатор значению которого будет равна строка заменяющая маркер.

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

И еще, использование спецификаторов заполнения, выравнивания и 0 имеет смысл только в том случае если в маркере есть спецификатор минимальная_ длина и его значение больше длины элемента аргумента.

-11

.точность – спецификатор точность состоит из точки и целого числа(int). Если элемент аргумента вещественное число, спецификатор точность показывает сколько цифр после запятой нужно выводить. Для нечисловых типов спецификатор точность показывает какое максимальное количество символов будет взято из элемента аргумента. Если длина элемента аргумента больше значения спецификатора точность, то из элемента аргумента в заменяющую маркер строку будет взято количество символов равное значению спецификатору точность, а все символы элемента аргумента, не вошедшие в строку, использованы не будут. Если элемент аргумента целое число – спецификатор точность игнорируется.

-12

тип –строка заменяющая маркер будет преобразована к типу, значение которого указана в этом спецификаторе.

Доступны следующие значения спецификатора тип:

Для целочисленных типов:

‘b’ – бинарый. Происходит преобразование результата форматирования в двоичное число

‘c’ – символ. Будет выведен символ Unicode соответствующий цифре, заменяющей маркер.

‘d’ – десятичное целое число(int). Происходит преобразование результата форматирования в десятичное число.

‘o’ – восьмеричное число. Происходит преобразование результата форматирования в восьмеричное число.

‘x’ – шестнадцатеричное число. Происходит преобразование результата форматирования в шестнадцатеричное число, если в числе есть буквы они выводятся в нижнем регистре.

‘X’ – шестнадцатеричное число. Происходит преобразование результата форматирования в шестнадцатеричное число, если в числе есть буквы они выводятся в верхнем регистре.

‘n’ – число. То же самое, что и ‘d’, но форма написания числа привязана к текущей настройки локали. (у нас, к примеру, миллион пишется с применением пробелов, а дробная часть отделяется от целого числа запятой (1 000 000,75), в других местах миллион может выглядеть так 1.000.000,75. Особенность написания числа, зависит от традиции написания в той или иной стране)

По умолчанию спецификатор равен ‘d’.

-13

Для чисел с плавающей точкой:

‘e’ – экспонента. Выводится число с экспонентной, символ экспоненты буква е в нижнем регистре.

‘E’ – экспонента. Выводится число с экспонентной символ экспоненты буква е, в верхнем регистре.

-14

‘f’ – фиксированная точность. Округление до шести знаков после запятой. Выводится число, у которого шесть чисел после запятой, если дробной части нет или в дробной части меньше шести чисел, то добавляются нули, если у числа после запятой числе больше шести, то в итоговом числе остаются только шесть чисел после запятой остальные отбрасываются с округлением.

‘F’ – тоже самое, что и ‘f’.

-15

‘g’ – основной формат. Выводятся числа в основном формате, если в числе не больше шести символов, знак числа не считается, а запятая считается, то выводится число как оно есть. Если целая часть числа шести цифр – применяется экспонента, символ экспоненты в нижнем регистре. В случае если целая часть числа состоит из меньше чем двух цифр, а дробная часть больше четырех знаков после запятой, то число округляется до четырех знаков после запятой

‘G’ - тоже самое, что и ‘g’, но если есть символ экспоненты, то он выводится в верхнем регистре.

-16

‘n’ – число. То же самое, что и ‘g’, но форма написания числа привязана к текущей настройки локали.

‘%’ – процент. Выводится строка с числом преобразованным спецификатором ‘f’ умноженным на 100, заканчивающимся знаком ‘%’.

-17

По умолчанию выводится число, преобразованное спецификатором ‘g’, но как минимум с одним знаком после запятой.

На этом по спецификаторам все.

Если есть ошибки прошу написать в комментах.

По ссылкам можно почитать мои конспекты:

Книги и курсы по Python
Книги и курсы по Python год спустя.
Встроенные функции (Built-in)
Методы словаря (Dict methods)
Методы списков (List methods)
Строковые методы (String Methods)
Библиотека os
Спецификаторы
Итерируемый тип данных
Инструкции continue, break и pass
Цикл for … in
Цикл while
Условная инструкция if
Индексация
Переменные
Встроенные функции print() и input()
Оператор присваивания
Основные типы данных
Утилита PIP
Коротко о языке

Наука
7 млн интересуются