Оператор форматирования %.

Программистам, знающим язык С, знакомая функция printf(), выводящая строку в определенном формате. Язык Python также поддерживает форматирование строки. На данный момент в Python поддерживается два способа форматирования текста:
Оператор %
Метод format()
В следующей версии Python оператор % могут удалить, поэтому настоятельно рекомендуется использовать метод format(). Но не рассмотреть, хотя бы вкратце, оператор % мы не можем, поскольку все еще есть множество кода, написанного с использованием этого оператора. Формат оператора % следующий:
<Формат> % <Значение>
Синтаксис описания формата такой:
%[(<Ключ>) ] [<Флаг>] [<Ширина>] [.<Точность>] <Преобразование>
Пример использования оператора форматирования:
>>> "%s/%s/%s" % (30, 10, 2020) '30/10/2020'
Рассмотрим параметры формата. Первый параметр - . Он задает ключ словаря, если он задан, то в параметре нужно указать словарь, а не кортеж. Вот пример:
>>> "%(car)s - %( year)s" % {"car" : "nissan", " year" 'nissan - 2021'
Параметр - это флаг преобразования, который может содержать следующие значения:
# - для восьмеричных значений добавляет в начало символы 0о, для шестнадцатеричных - 0х, для вещественных чисел - будет выводиться точка, даже если дробная часть равна 0
0- если указан, будут выводиться ведущие нули для числового заполнения
- - задает выравнивание по левой границе области
пробел - добавляет пробел перед положительным числом, перед отрицательным будет выводиться
+ - обязательный вывод знака, как для отрицательных, так и для положительных чисел
Примеры:
>>> "%#х %#х" % (0xfff, 100) '0xfff 0х64'
>>> "%+d %+d" % (-3, 3) '-3 +3'
Параметр <Ширина>определяет минимальную ширину поля, но если строка не помещается в указанную ширину, то значение будет проигнорировано и строка будет выведена полностью. Пример:
>>> "'%10d' - '%-l0d'" % (5, 5)
"’ 5 ‘ – ‘ 5
Параметр <Точность>задает количество знаков после точки для вещественных чисел:
>>> from math import *
>>> "%s %f % . 2f" % (е, е, е)
'2.718281828459045 2.718282 2.72'
Последний параметр является обязательным и может содержать следующие значения:
а - пытается преобразовать любой объект в строку, используя функцию ascii();
с - выводит одиночный символ или преобразует число в символ;
d (i) - возвращает целую часть числа;
е - вещественное число в экспоненциальной форме (буква "е" в нижнем регистре);
Е- вещественное число в экспоненциальной форме (буква "е" в верхнем регистре);
f (F) - используется для вывода вещественного числа;
g - то же самое, что f или Е (используется более короткая запись числа);
G - то же самое, что F или Е (используется более короткая запись числа);
s - пытается преобразовать любой объект в строку ( с помощью функции str() );
r - то же, что и s, но для преобразования в строку вместо функции str() будет использоваться функция repr();
о - выводит восьмеричное значение;
х - шестнадцатеричное значение в нижнем регистре;
Х - шестнадцатеричное значение в верхнем регистре.
Ранее было продемонстрировано использование модификаторов d, f, s, х. Остальные модификаторы используются аналогично. Вместо множества примеров, которые вы и сами можете провести, я подскажу, как правильно нужно использовать модификаторы формата и оператор %.
Представим, что у нас есть НТМL-шаблон, который нужно заполнить данными. В этом случае идеально подходит оператор% (листинг ниже).
Листинг. Правильное использование оператора %
template = """<html>
<head>
<title>%(title)s</title>
</head>
<body>
%(text)s
</body>
</html>"""
data = { "title": "Мой сайт",
"text": "Контент"}
print(template % data)
Переменная template содержит код шаблона, а переменная data данные шаблона. Затем последним оператором мы заполняем наш шаблон данными. Результат изображен на рисунке ниже.

Оператор форматирования %. - 928541880001

Комментарии

Комментариев нет.