Интерполяция некоторых строк и целых чисел:
>>> 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'