Мастерство строк форматирования format() в Python: понятные примеры
Что такое Python String format()?
Python String format() — функция для замены, подстановки или преобразования строки с плейсхолдерами на валидные значения в итоговой строке. Это встроенный метод класса строки, возвращающий отформатированную строку. Плейсхолдеры внутри строки определяются в фигурных скобках.
Например, “Welcome to Guru99 {}”.format(‘value here’).
В этом уроке вы узнаете:
- Что такое Python String format()?
- Синтаксис функции format() в Python
- Как работает string format()?
- Пример: пустой плейсхолдер, заменённый строковым значением
- Пример: пустой плейсхолдер, заменённый числовым значением
- Пример: использование переменных или именованных аргументов внутри плейсхолдера
- Пример: использование индекса или позиционных аргументов внутри плейсхолдера
- Форматирование внутри плейсхолдеров
- Использование класса с format()
- Использование словаря с format()
- Дополнение (padding) подстановок переменных
Синтаксис функции 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 знаков используйте .2f | print("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 даёт важную встроенную команду format(), помогающую заменять, подставлять или конвертировать строку с плейсхолдерами на валидные значения в итоговой строке.
- Плейсхолдеры внутри модуля строк Python определяются в фигурных скобках, например, “Welcome to Guru99 {}”.format(‘value here’).
- Плейсхолдер может быть пустым {}, или содержать переменную, например {name}, или числовой индекс, например {0}, {1} и т.д.
- Можно использовать форматирование строк Python внутри плейсхолдеров для добавления отступов, центрирования и форматирования чисел.
Python
- Освоение String.indexOf() в Java: поиск подстрок и практические примеры
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
- Освоение лямбда-функций Python: практические примеры и лучшие практики
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики
- Python timeit(): измерение времени выполнения с практическими примерами
- Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
- Понимание type() и isinstance() в Python: практические примеры