Простой Python. Современный стиль программирования (Любанович) - страница 104

).

Формат

До этого момента мы просто игнорировали форматирование текста. В главе 2 были показаны несколько функций для выравнивания строк, а в примерах кода использовалась простая функция print() или даже вывод информации на экран поручался интерактивному интерпретатору. Но теперь мы рассмотрим, как интерполировать данные в строки — другими словами, разместить значения внутри строк, — применяя разные форматы. Вы можете использовать эту возможность, чтобы создавать отчеты и другие документы, для которых нужно задать определенный внешний вид.

Python предлагает два способа форматирования строк, их часто называют старым стилем и новым стилем. Оба стиля поддерживаются Python 2 и 3 (новый стиль появился в Python 2.6). Старый стиль проще, поэтому мы начнем с него.

Старый стиль с символом %

Старый стиль форматирования строк имеет форму строка % данные. Внутри строки находятся интерполяционные последовательности. В табл. 7.2 показано, что самая простая последовательность — это символ %, за которым следует буква, представляющая тип данных, который должен быть отформатирован.


Таблица 7.2. Типы преобразования
%sСтрока
%dЦелое число в десятичной системе счисления
%xЦелое число в шестнадцатеричной системе счисления
%oЦелое число в восьмеричной системе счисления
%fЧисло с плавающей точкой в десятичной системе счисления
%eЧисло с плавающей точкой в шестнадцатеричной системе счисления
%gЧисло с плавающей точкой в восьмеричной системе счисления
%%Символ %

Далее мы рассмотрим несколько примеров. Сначала целое число:

>>>> '%s' % 42

>'42'

>>>> '%d' % 42

>'42'

>>>> '%x' % 42

>'2a'

>>>> '%o' % 42

>'52'

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

>>>> '%s' % 7.03

>'7.03'

>>>> '%f' % 7.03

>'7.030000'

>>>> '%e' % 7.03

>'7.030000e+00'

>>>> '%g' % 7.03

>'7.03'

Целое число и символ %:

>>>> '%d%%' % 100

>'100 %'

Интерполяция некоторых строк и целых чисел:

>>>> actor = 'Richard Gere'

>>>> cat = 'Chester'

>>>> weight = 28

>>>> "My wife's favorite actor is %s" % actor

>"My wife's favorite actor is Richard Gere"

>>>> "Our cat %s weighs %s pounds" % (cat, weight)

>'Our cat Chester weighs 28 pounds'

Последовательность %s внутри строки означает, что в нее нужно интерполировать строку. Количество использованных символов % должно совпадать с количеством объектов, которые располагаются после %. Один объект вроде actor располагается сразу после символа %. Если таких объектов несколько, они должны быть сгруппированы в кортеж (нужно окружить их скобками и разделить запятыми) вроде (cat, weight).

Несмотря на то что переменная weight целочисленная, последовательность %s внутри строки преобразует ее в строку.