Рубрики
Без рубрики

Интерполяция строк Python с помощью оператора Percent (%)

Автор оригинала: Frank Hofmann.

Интерполяция строк Python с помощью оператора Percent (%)

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

Оператор %

Этот способ работы с текстом был поставлен с Python с самого начала, и он также известен как форматирование в стиле C, поскольку он происходит от языка программирования C. Другое описание для него – простое позиционное форматирование .

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

'%s is smaller than %s' % ('one', 'two')

Интерпретатор Python заменяет первое вхождение %s в строке заданной строкой “один”, а второе %s строкой “два”. Эти строки %s на самом деле являются заполнителями в нашей строке “шаблона”, и они указывают, что строки будут помещены туда.

В качестве первого примера ниже мы продемонстрируем с помощью Python REPL, как печатать строковое значение и значение с плавающей точкой:

>>> print("Mr. %s, the total is %.2f." % ("Jekyll", 15.53))
'Mr. Jekyll, the total is 15.33.'

Точно так же, как %s является заполнителем для строк, %f является заполнителем для чисел с плавающей запятой. “.2” перед f – это то, что указывает, сколько цифр мы хотим отобразить после десятичной точки.

Это всего лишь два простых примера того, что возможно, и поддерживается гораздо больше типов заполнителей. Вот полный список типов заполнителей более подробно:

%c

Этот заполнитель представляет собой один символ.

>>> print("The character after %c is %c." % ("B", "C"))
The character after B is C.

Предоставление более одного символа в качестве переменной здесь вызовет исключение.

%s

Этот заполнитель использует преобразование строк через str() перед форматированием. Таким образом, здесь можно использовать любое значение, которое может быть преобразовано в строку с помощью str () .

>>> place = "New York"
>>> print("Welcome to %s!" % place)
Welcome to New York!

Здесь у нас есть только один элемент, который будет использоваться в нашем строковом форматировании, и поэтому мы не обязаны заключать элемент в кортеж, как в предыдущих примерах.

%i и %d

Эти заполнители представляют собой знаковое десятичное целое число.

>>> year = 2019
>>> print("%i will be a perfect year." % year)
2019 will be a perfect year.

Поскольку этот заполнитель ожидает десятичную дробь, он будет преобразован в единицу, если вместо нее будет указано значение с плавающей запятой.

%u

Этот заполнитель представляет собой десятичное целое число без знака.

%o

Этот заполнитель представляет собой восьмеричное целое число.

>>> number = 15
>>> print("%i in octal is %o" % (number, number))
15 in octal is 17
%x

Представляет собой шестнадцатеричное целое число с использованием строчных букв (a-f).

>>> number = 15
>>> print("%i in hex is %02x" % (number, number))
15 in hex is 0f

Используя префикс “02” в нашем заполнителе, мы говорим Python напечатать двухсимвольную шестнадцатеричную строку.

%X

Представляет собой шестнадцатеричное целое число с использованием прописных букв (A-F).

>>> number = 15
>>> print("%i in hex is %04X" % (number, number))
15 in hex is 000F

И, как и в предыдущем примере, используя префикс “04” в нашем заполнителе, мы говорим Python напечатать четырехсимвольную шестнадцатеричную строку.

%e

Представляет собой экспоненциальную нотацию со строчной буквой “е”.

%E

Представляет собой экспоненциальную нотацию с заглавной буквой “е”.

%f

Представляет собой вещественное число с плавающей запятой.

>>> price = 15.95
>>> print("the price is %.2f" % price)
the price is 15.95
%g

Более короткая версия %f и %e .

%G

Более короткая версия %f и %E .

Заполнители, показанные выше, позволяют форматировать строки, указывая типы данных в шаблонах. Однако это не единственные особенности оператора интерполяции. В следующем подразделе мы увидим, как мы можем заполнить наши строки пробелами с помощью оператора % .

Выравнивание выходного сигнала

До сих пор мы только показывали, как форматировать текстовые строки, задавая простые заполнители. С помощью дополнительного числового значения можно определить общее пространство , которое должно быть зарезервировано по обе стороны переменной в выходной строке.

Например, значение %10s резервирует 10 символов с дополнительным интервалом слева от заполнителя, а значение %-10s помещает любое дополнительное пространство справа от заполнителя. Один символ заполнения является пробелом и не может быть изменен.

>>> place = "London"
>>> print ("%10s is not a place in France" % place)  # Pad to the left
      London is not a place in France
>>> print ("%-10s is not a place in France" % place) # Pad to the right
London     is not a place in France

Работа с числами работает точно так же:

>>> print ("The postcode is %10d." % 25000)    # Padding on the left side
The postcode is      25000.
>>> print ("The postcode is %-10d." % 25000)   # Padding on the right side
The postcode is 25000     .

Усечение строк и округление чисел является аналогом заполнения. Взгляните на Округление чисел в Python, чтобы узнать больше о ловушках, которые здесь скрываются.

Вывод

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