Шаг 40.
Основы языка Python.
Строки и двоичные данные. Форматирование строк

    На этом шаге мы рассмотрим один из способов форматирования.

    Вместо соединения строк с помощью оператора + лучше использовать форматирование. Эта операция позволяет соединять строку с любым другим типом данных и выполняется быстрее конкатенации.


   Примечание. В последующих версиях Python оператор форматирования % может быть удален. Вместо этого оператора в новом коде следует использовать метод format(), который рассматривается далее.

    Форматирование имеет следующий синтаксис:

  <Строка специального формата> % <Значения>

    Внутри параметра <Строка специального формата> могут быть указаны спецификаторы, имеющие следующий синтаксис:

  % [ (<Ключ>) ] [<Флаг>] [<Ширина>] [ .<Точность>] <Тип преобразования>

    Количество спецификаторов внутри строки должно быть равно количеству элементов в параметре <Значения>. Если используется только один спецификатор, то параметр <Значения> может содержать одно значение, в противном случае необходимо перечислить значения через запятую внутри круглых скобок, создавая тем самым кортеж.

>>> "%s" % 10 # Один элемент
'10'
>>> "%s - %s - %s" % (10, 20, 30) # Несколько элементов
'10 - 20 - 30'

    Параметры внутри спецификатора имеют следующий смысл:

    Если внутри строки необходимо использовать символ процента, то этот символ следует удвоить, иначе будет выведено сообщение об ошибке:

>>> print("% %s" % ("- это символ процента")) # Ошибка
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    print("% %s" % ("- это символ процента")) # Ошибка
ValueError: unsupported format character '%' (0x25) at index 2
>>> print("%% %s" % ("- это символ процента")) # Правильно
% - это символ процента

    Форматирование строк очень удобно использовать при передаче данных в шаблон Web-страницы. Для этого заполняем словарь данными и указываем его справа от символа %, а сам шаблон - слева. Продемонстрируем это на примере:

# -*- coding: utf-8 -*-
html = """<html>
<head><title>%(title)s</title>
</head>
<body>
<h1>%(h1)s</h1>
<div>%(content)s</div>
</body>
</html>""" 
arr = {"title":   "Это название документа",
       "h1":      "Это заголовок первого уровня",
       "content": "Это основное содержание страницы"}
print(html % arr) # Подставляем значения и выводим шаблон
input()
Архив с файлом можно взять здесь.

    Программа и результат ее выполнения приведен на рисунке 1.


Рис.1. Программа и результат ее выполнения

    Для форматирования строк можно также использовать следующие методы:

    На следующем шаге мы рассмотрим метод format().




Предыдущий шаг Содержание Следующий шаг