Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 142

'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

внутри строки преобразует ее в строку.

Вы можете добавить другие значения между % и определением типа, чтобы указать

минимальную и максимальную ширину, выравнивание и заполнение символами.

Определим несколько переменных: целочисленную n, число с плавающей точ-

кой f и строку s:

>>> n = 42

>>> f = 7.03

>>> s = 'string cheese'

Отформатируем их, используя ширину по умолчанию:

>>> '%d %f %s' % (n, f, s)

'42 7.030000 string cheese'

190

Глава 7. Работаем с данными профессионально

Установим минимальную длину поля, равную 10 символам, для каждой пере-

менной и выровняем их по правому краю, заполняя неиспользованное место про-

белами:

>>> '%10d %10f %10s' % (n, f, s)

' 42 7.030000 string cheese'

Используем ту же ширину поля, но выравнивание будет по левому краю:

>>> '%-10d %-10f %-10s' % (n, f, s)

'42 7.030000 string cheese'

В этот раз укажем ту же длину поля, но максимальное количество символов

будет равно 4, выровняем все по правому краю. Такая настройка обрезает строку

и ограничивает число с плавающей точкой четырьмя цифрами после десятичной

запятой:

>>> '%10.4d %10.4f %10.4s' % (n, f, s)

' 0042 7.0300 stri'

То же самое, но выравнивание по правому краю:

>>> '%.4d %.4f %.4s' % (n, f, s)

'0042 7.0300 stri'

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

кодировать:

>>> '%*.*d %*.*f %*.*s' % (10, 4, n, 10, 4, f, 10, 4, s)

' 0042 7.0300 stri'