Python f-строки: форматирование чисел, дат и выравнивание
F-строка в Python начинается с буквы f перед кавычками, а выражения внутри фигурных скобок подставляются в текст. После двоеточия внутри скобок задают формат: {price:.2f} выводит число с двумя знаками после запятой, {name:>10} выравнивает по правому краю.
Подстановка значений и выражений
name, price, qty = "Хлеб", 45.5, 3
print(f"{name}: {price} ₽") # Хлеб: 45.5 ₽
print(f"Итого: {price * qty} ₽") # Итого: 136.5 ₽
print(f"{name.upper()}") # ХЛЕБ
print(f"{qty * price = }") # qty * price = 136.5
print(f"{name!r}") # 'Хлеб'Запись {выражение = } печатает и само выражение, и его значение, это удобно для отладки. Преобразование !r выводит значение как repr, с кавычками.
Числа
print(f"{3.14159:.2f}") # 3.14
print(f"{1234567.891:,.2f}") # 1,234,567.89
print(f"{1234567:_}") # 1_234_567
print(f"{0.256:.1%}") # 25.6%
print(f"{42:05d}") # 00042
print(f"{255:x}") # ff
print(f"{255:#b}") # 0b11111111
print(f"{1234.5:e}") # 1.234500e+03Формат | Что делает |
|---|---|
| Два знака после запятой |
| Разделитель тысяч |
| Умножить на 100 и добавить знак процента |
| Дополнить нулями слева до пяти символов |
| Шестнадцатеричная, двоичная, восьмеричная запись |
Выравнивание и заполнение
Прямые чёрточки в примерах показывают границы поля:
print(f"|{name:>10}|") # | Хлеб|
print(f"|{name:<10}|") # |Хлеб |
print(f"|{name:^10}|") # | Хлеб |
print(f"|{name:*^10}|") # |***Хлеб***|
print(f"|{42:>6}|") # | 42|Таблица с выравниванием
rows = [("Хлеб", 45.5), ("Молоко", 90.0), ("Сыр", 450.25)]
for title, cost in rows:
print(f"{title:<8}{cost:>8.2f}")Результат ровно в два столбца: названия слева шириной 8, цены справа шириной 8 с двумя знаками.
Даты
from datetime import date, datetime
print(f"{date(2026, 10, 25):%d.%m.%Y}") # 25.10.2026
print(f"{datetime(2026, 10, 25, 14, 30):%H:%M}") # 14:30Ширина и точность из переменных
width, precision = 10, 3
print(f"|{3.14159:{width}.{precision}f}|") # | 3.142|Фигурные скобки и многострочный текст
print(f"{{литерал}} и {name}") # {литерал} и Хлеб
message = (
f"Товар: {name}\n"
f"Цена: {price:.2f}"
)
print(message.splitlines()[1]) # Цена: 45.50Чтобы вывести саму скобку, удвойте её: {{ и }}.
Сравнение способов форматирования
Способ | Пример |
|---|---|
f-строка |
|
|
|
Оператор |
|
F-строки читаются проще и работают быстрее. str.format нужен, когда шаблон хранится отдельно, например в файле перевода.
Частые вопросы
Как использовать кавычки внутри f-строки?
До Python 3.12 внутри выражения нельзя повторять тот тип кавычек, которым открыта строка. Используйте другие кавычки: f"{data['key']}". Начиная с 3.12 ограничение снято.
Как округлить число в f-строке?
Используйте формат .Nf, где N число знаков: f"{x:.0f}" округляет до целого. Это именно форматирование, исходное значение не меняется.