Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Мастерство строк форматирования format() в Python: понятные примеры

Что такое Python String format()?

Python String format() — функция для замены, подстановки или преобразования строки с плейсхолдерами на валидные значения в итоговой строке. Это встроенный метод класса строки, возвращающий отформатированную строку. Плейсхолдеры внутри строки определяются в фигурных скобках.

Например, “Welcome to Guru99 {}”.format(‘value here’).

В этом уроке вы узнаете:

Синтаксис функции format() в Python

templatestring.format(val1, val2...)

Параметры

val1, val2 … : Значения, которые нужно подставить в заданную шаблонную строку с плейсхолдерами в виде фигурных скобок {}. Плейсхолдеры могут быть строкой, парой ключ/значение, целыми числами, числами с плавающей точкой, символами и т.д.

Возвращаемое значение:

Возвращает итоговую строку с валидными значениями, заменёнными на месте плейсхолдеров в фигурных скобках.

Плейсхолдеры

Плейсхолдеры в шаблонной строке представлены фигурными скобками, например {}. Плейсхолдер может быть пустым {}, или содержать переменную, например {name}, или числовой индекс, например {0}, {1} и т.д.

Как работает string format()?

Метод Python String format() сканирует исходную строку на наличие плейсхолдеров. Плейсхолдеры могут быть пустыми фигурными скобками ({}), позиционными аргументами (индексы 0, 1, например {0}, {1}).

Для именованных аргументов имя переменной будет внутри фигурных скобок, например {name}, {age}. В случае пустых фигурных скобок значения из format подставляются в последовательности.

Первое значение заменит первую пустую скобку, затем следующее. Для позиционных аргументов индекс начинается с 0. Значения в format разделены запятыми, 0-е значение указывает на первое значение внутри format и так далее.

Для именованных аргументов порядок значений внутри format не важен, так как замена происходит на основе имени переменной в плейсхолдере. Вот несколько примеров использования плейсхолдеров как пустых, позиционных и с ключевыми словами.

Пример: пустой плейсхолдер, заменённый строковым значением

В примере ниже строка имеет пустые фигурные скобки({}). Значение, переданное в format, подставится внутрь скобок.

Значение, которое мы хотим подставить — строка.

Пример:

Используя форматирование строк в Python, мы хотим, чтобы фигурные скобки ({}) были заменены строковым значением. Значение передаётся в format(“Guru99”). При выполнении фигурные скобки {} заменяются на Guru99, и итоговая строка: Welcome to Guru99 tutorials.

print ("Welcome to {} tutorials".format("Guru99"))

Вывод:

Welcome to Guru99 tutorials

Пример: пустой плейсхолдер, заменённый числовым значением

В примере ниже мы хотим подставить числовое значение в исходную строку. Фигурные скобки({}) добавляются туда, где нужно число. При выполнении пустые скобки заменяются на числовое значение.

Пример:

Можно также использовать format() для вставки чисел в строку. Пример покажет, как заменить пустой плейсхолдер {} на число 99 внутри format().

print ("Welcome to Guru{} Tutorials".format("99"))

Вывод:

Welcome to Guru99 Tutorials

Пример: использование переменных или именованных аргументов внутри плейсхолдера

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

Пример:

Можно использовать переменные внутри фигурных скобок, например {name} {num}. Значения для переменных name и num доступны внутри format, т.е. format(name=”Guru”, num=”99″). Значения, данные name и num, заменятся внутри {name} и {num}.

print ("Welcome to {name}{num} Tutorials".format(name="Guru", num="99"))

Вывод:

Welcome to Guru99 Tutorials

Пример: использование индекса или позиционных аргументов внутри плейсхолдера

Значения могут подставляться с использованием индексов 0, 1, 2 внутри плейсхолдеров. Значение выбирается по порядку из format(), как показано ниже.

Пример:

print ("Welcome to {0}{1} Tutorials".format("Guru","99"))

Вывод:

Welcome to Guru99 Tutorials

Пример: использование нескольких плейсхолдеров в строке

В этом примере используются несколько пустых плейсхолдеров.

Пример:

Строка в примере имеет несколько пустых плейсхолдеров, и каждый будет ссылаться на значение внутри format(). Первое значение заменит первый плейсхолдер и так далее.

print ("{} is {} new kind of {} experience!".format("Guru99", "totally","learning"))

Вывод:

Guru99 is totally new kind of learning experience!

Форматирование внутри плейсхолдеров

Вы видели, что плейсхолдер может быть пустым, с переменной или индексом. Также возможно применить форматирование строк Python внутри плейсхолдера.

Вот список форматов

ФорматОписаниеПример
:dВывод в десятичном формате внутри плейсхолдераprint("The binary to decimal value is : {:d}".format(0b0011))
Вывод:
The binary to decimal value is : 3
:bВывод в двоичном форматеprint("The binary value is : {:b}".format(500))
Вывод:
The binary value is : 111110100
:eНаучный формат (строчная e)print("The scientific value is : {:e}".format(40))
Вывод:
The scientific format value is : 4.000000e+01
:EНаучный формат (заглавная E)print("The scientific value is : {:E}".format(40))
Вывод:
The scientific value is : 4.000000E+01
:fФиксированная точка (по умолчанию 6 знаков после запятой). Для 2 знаков используйте .2fprint("The value is : {:f}".format(40))
Вывод:
The value is : 40.000000

Пример: вывод до 2 знаков.
print("The value is : {:.2f}".format(40))
Вывод:
The value is: 40.00
:oВосьмеричный форматprint("The value is : {:o}".format(500))
Вывод:
The value is : 764
:xШестнадцатеричный (нижний регистр)print("The value is : {:x}".format(500))
Вывод:
The value is : 1f4
:XШестнадцатеричный (верхний регистр)print("The value is : {:X}".format(500))
Вывод:
The value is : 1F4
:nЧисловой форматprint("The value is : {:n}".format(500.00))
Вывод:
The value is : 500
:%Процентный формат (по умолчанию 6 знаков). Для целых процентов используйте {:.0%}print("The value is : {:%}".format(0.80))
Вывод:
The value is : 80.000000%

Пример пропуска десятичных знаков:
print("The value is : {:.0%}".format(0.80))
Вывод:
The value is: 80%
:_Подчёркивание как разделитель тысяч (Python 3.6+)print("The value is {:_}".format(1000000))
Вывод:
The value is : 1_000_000
:,Запятая как разделитель тысячprint("The value is : {:,}".format(1000000))
Вывод:
The value is : 1,000,000
:Пробел перед положительными числами (ширина поля)Пример добавления пробела/отступа перед числом. Число 5 указывает количество пробелов.
print("The value is: {:5}".format(40))
Вывод:
The value is:    40
:-Минус перед отрицательными числамиПример вывода с минусом перед числом через {:-}.
print("The value is: {:-}".format(-40))
Вывод:
The value is: -40
:+Плюс перед положительными числамиПример вывода с плюсом через {:+}.
print("The value is: {:+}".format(40))
Вывод:
The value is: +40
:=Размещение знака +/- слева от знака равенстваПример вывода с плюсом/минусом перед знаком равенства через {:=}.
print("The value is {:=}".format(-40))
Вывод:
The value is -40
:^Центрирование результатаИспользование {:^} для центрирования текста. Число 10 добавляет 10 пробелов для демонстрации центрирования.
print("The value {:^10} is positive value".format(40))
Вывод:
The value     40     is positive value
:>Выравнивание по правому краюПробел 10 через (:>10), значение выравнивается вправо.
print("The value {:>10} is positive value".format(40))
Вывод:
The value         40 is positive value
:<Выравнивание по левому краюПробел 10 через (:<10), значение выравнивается влево.
print("The value {:<10} is positive value".format(40))
Вывод:
The value 40         is positive value

Использование класса с format()

В этом примере создаём класс и используем его объект внутри метода .format(). Плейсхолдеры будут ссылаться на свойства или члены класса через объект класса.

Пример:

Класс вызывается внутри format(c=MyClass()). Объект c будет иметь ссылку на свойства и методы внутри класса MyClass().

class MyClass:
    msg1="Guru"
    msg2="Tutorials"
print("Welcome to {c.msg1}99 {c.msg2}!".format(c=MyClass()))

Вывод:

Welcome to Guru99 Tutorials!

Использование словаря с format()

Также возможно использование словаря внутри format(), как показано ниже:

my_dict = {'msg1': "Welcome", 'msg2': 'Guru99'}
print("{m[msg1]} to {m[msg2]} Tutorials!".format(m=my_dict))

Вывод:

Welcome to Guru99 Tutorials!

Дополнение (padding) подстановок переменных

Используя метод string.format(), можно добавить отступы, пробелы через плейсхолдеры внутри строки.

Пример:

В примере ниже добавим пробел внутри плейсхолдера с помощью format(). Чтобы добавить пробел, укажите количество пробелов внутри фигурных скобок после двоеточия(:). Плейсхолдер будет выглядеть как {:5}.

print("I have {:5} dogs and {:5} cat".format(2,1))

Вывод:

I have     2 dogs and     1 cat

Можно также указать индекс внутри плейсхолдера, например: {0:5}, где 0 ссылается на первое значение внутри format.

print("I have {0:5} dogs and {1:5} cat".format(2,1))

Вывод:

I have     2 dogs and     1 cat

Резюме


Python

  1. Освоение String.indexOf() в Java: поиск подстрок и практические примеры
  2. Мастерство метода strip() в Python: подробное руководство и практические примеры
  3. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  4. Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
  5. Освоение лямбда-функций Python: практические примеры и лучшие практики
  6. Функция round() в Python: подробное объяснение с практическими примерами
  7. Освоение функции map() в Python: синтаксис, примеры и лучшие практики
  8. Python timeit(): измерение времени выполнения с практическими примерами
  9. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  10. Понимание type() и isinstance() в Python: практические примеры