).
До этого момента мы просто игнорировали форматирование текста. В главе 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 внутри строки преобразует ее в строку.