Существует несколько различных способов форматирования строк в Python,
один из которых выполняется с помощью %
, известного как оператор
форматирования (или интерполяции) строк. В этой статье мы покажем вам,
как использовать этот оператор для построения строк со строкой шаблона и
переменными, содержащими ваши данные.
Оператор
Этот способ работы с текстом с самого начала поставлялся с Python, и он также известен как форматирование в стиле C, поскольку происходит от языка программирования C. Другое описание этого - простое позиционное форматирование .
Оператор %
указывает интерпретатору Python форматировать строку с
использованием заданного набора переменных, заключенных в кортеж после
оператора. Вот очень простой пример:
'%s is smaller than %s' % ('one', 'two')
Интерпретатор Python заменяет первое вхождение %s
в строке заданной
строкой «one», а второе %s
- строкой «two». Эти %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
%Икс
Представляет шестнадцатеричное целое число с использованием строчных букв (af).
>>> number = 15
>>> print("%i in hex is %02x" % (number, number))
15 in hex is 0f
Используя префикс «02» в нашем заполнителе, мы говорим Python напечатать двухсимвольную шестнадцатеричную строку.
%ИКС
Представляет шестнадцатеричное целое число с использованием прописных букв (AF).
>>> 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
%грамм
Укороченная версия %f
и %e
.
%ГРАММ
Укороченная версия %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 , чтобы узнать больше о ловушках, которые здесь скрываются.
Заключение
В этой статье мы увидели, как оператор интерполяции (он же форматирование) является мощным способом форматирования строк, который позволяет вам указывать тип данных, точность с плавающей запятой и даже интервалы / отступы.