Python f-строки: форматирование чисел, дат и выравнивание

Категория: Python · Язык: Python · Обновлено:

F-строка в Python начинается с буквы f перед кавычками, а выражения внутри фигурных скобок подставляются в текст. После двоеточия внутри скобок задают формат: {price:.2f} выводит число с двумя знаками после запятой, {name:>10} выравнивает по правому краю.

Подстановка значений и выражений

Python
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, с кавычками.

Числа

Python
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

Формат

Что делает

.2f

Два знака после запятой

, или _

Разделитель тысяч

.1%

Умножить на 100 и добавить знак процента

05d

Дополнить нулями слева до пяти символов

x, b, o

Шестнадцатеричная, двоичная, восьмеричная запись

Выравнивание и заполнение

Прямые чёрточки в примерах показывают границы поля:

Python
print(f"|{name:>10}|")                   # |      Хлеб|
print(f"|{name:<10}|")                   # |Хлеб      |
print(f"|{name:^10}|")                   # |   Хлеб   |
print(f"|{name:*^10}|")                  # |***Хлеб***|
print(f"|{42:>6}|")                      # |    42|

Таблица с выравниванием

Python
rows = [("Хлеб", 45.5), ("Молоко", 90.0), ("Сыр", 450.25)]
for title, cost in rows:
    print(f"{title:<8}{cost:>8.2f}")

Результат ровно в два столбца: названия слева шириной 8, цены справа шириной 8 с двумя знаками.

Даты

Python
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

Ширина и точность из переменных

Python
width, precision = 10, 3
print(f"|{3.14159:{width}.{precision}f}|")              # |     3.142|

Фигурные скобки и многострочный текст

Python
print(f"{{литерал}} и {name}")                          # {литерал} и Хлеб

message = (
    f"Товар: {name}\n"
    f"Цена: {price:.2f}"
)
print(message.splitlines()[1])                          # Цена: 45.50

Чтобы вывести саму скобку, удвойте её: {{ и }}.

Сравнение способов форматирования

Способ

Пример

f-строка

f"{name}: {price:.2f}"

str.format

"{}: {:.2f}".format(name, price)

Оператор %

"%s: %.2f" % (name, price)

F-строки читаются проще и работают быстрее. str.format нужен, когда шаблон хранится отдельно, например в файле перевода.

Частые вопросы

Как использовать кавычки внутри f-строки?

До Python 3.12 внутри выражения нельзя повторять тот тип кавычек, которым открыта строка. Используйте другие кавычки: f"{data['key']}". Начиная с 3.12 ограничение снято.

Как округлить число в f-строке?

Используйте формат .Nf, где N число знаков: f"{x:.0f}" округляет до целого. Это именно форматирование, исходное значение не меняется.