Шаг 41.
Основы языка Python.
Строки и двоичные данные. Метод format()

    На этом шаге мы рассмотрим параметры и использование этого метода.

    Помимо операции форматирования, мы можем использовать для этой же цели метод format(). Он имеет следующий синтаксис:

  <Строка> = <Строка специального формата>.format(*args, **kwargs)

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

  {[<Поле>][!<Функция>][:<Формат>]}

    Все символы, расположенные вне фигурных скобок, выводятся без преобразований. Если внутри строки необходимо использовать символы { и }, то эти символы следует удвоить, иначе возбуждается исключение ValueError. Пример:

>>> print("Символы {{ и }} - {0}".format("специальные"))
Символы { и } - специальные

    В параметре <Поле> можно указать индекс позиции (нумерация начинается с нуля) или ключ. Допустимо комбинировать позиционные и именованные параметры, В этом случае в методе format () именованные параметры указываются в самом конце. Пример:

>>> "{0} - {1} - {2}".format(10, 12.3, "string") # Индексы
'10 - 12.3 - string'
>>> arr = [10, 12.3, "string"]
>>> "{0} - {1} - {2}".format(*arr) # Индексы
'10 - 12.3 - string'
>>> "{model} - {color}".format(color="red", model="BMW") # Ключи
'BMW - red'
>>> d = {"color": "red", "model": "BMW"}
>>> "{model} - {color}".format(**d) # Ключи
'BMW - red'
>>> "{color} - {0}".format(2015, color="red") # Комбинация
'red - 2015'

    В качестве параметра в методе format () можно указать объект. Для доступа к элементам по индексу внутри строки формата применяются квадратные скобки, а для доступа к атрибутам объекта используется точечная нотация:

>>> arr = [10, 12.3, "string"]
>>> "{0[0]} - {0[1]} - {0[2]}".format(arr) # Индексы
'10 - 12.3 - string'
>>> "{arr[0]} - {arr[2]}".format(arr=arr) # Индексы
'10 - string'
>>> class Car: color, model = "red", "BMW"

>>> car = Car()
>>> "{0.model} - {0.color}".format(car) # Атрибуты
'BMW - red'

    Существует также краткая форма записи, при которой параметр <Поле> не указывается. В этом случае скобки без указанного индекса нумеруются слева направо, начиная с нуля:

>>> "{} - {} - {} - {n}".format(1, 2, 3, n=4) # {0} - {1} - {2} - {n}
'1 - 2 - 3 - 4'
>>> "{} - {} - {n} - {}".format(1, 2, 3, n=4) # {0} - {1} - {n} - {2}
'1 - 2 - 4 - 3'

    Параметр <Функция> задает функцию, с помощью которой обрабатываются данные перед вставкой в строку. Если указано значение s, то данные обрабатываются функцией str (), если значение r, то функцией repr (), а если значение a, то функцией ascii (). Если параметр не указан, то для преобразования данных в строку используется функция str(). Пример:

>>> print("{0!s}".format("строка")) # str()
строка
>>> print("{0!r}".format("строка")) # repr()
'строка'
>>> print("{0!a}".format("строка")) # ascii()
'\u0441\u0442\u0440\u043e\u043a\u0430'

    В параметре <Формат> указывается значение, имеющее следующий синтаксис:

  [[<Заполнитель>]<Выравнивание>][<Знак>][#][0][<Ширина>][,]
  [.<Точность>][<Преобразование>]

    На следующем шаге мы рассмотрим функции и методы для работы со строками.




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