Найти в Дзене
Будни питониста

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

Язык Python также поддерживает форматирование строки. На данный момент в Python поддерживается два способа форматирования текста: Оператор % Метод format() В следующей версии Python оператор % могут удалить, поэтому настоятельно рекомендуется использовать метод format(). Но не рассмотреть, хотя бы вкратце, оператор % мы не можем, поскольку все еще есть множество кода, написанного с использованием этого оператора. Формат оператора % следующий: <Формат> % <Значение> Синтаксис описания формата такой: %[(<Ключ>) ] [<Флаг>] [<Ширина>] [.<Точность>] <Преобразование> Пример использования оператора форматирования: >>> "%s/%s/%s" % (30, 10, 2020) '30/10/2020' Рассмотрим параметры формата. Первый параметр - . Он задает ключ словаря, если он задан, то в параметре нужно указать словарь, а не кортеж. Вот пример: >>> "%(car)s - %( year)s" % {"car" : "nissan", " year" 'nissan - 2021' Параметр - это флаг преобразования, который может содержать следующие значения: # - для восьмеричных значений добавляе

Язык 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 данные шаблона. Затем последним оператором мы заполняем наш шаблон данными. Результат изображен на рисунке ниже.

Результат работы программы из листинга.
Результат работы программы из листинга.