Способы вывода строк с форматированием в Python

Раздел: Основы Python -> Форматирование вывода

Форматирование строк в Python: обзор методов

Форматирование строк позволяет вставлять переменные и выражения в строковой шаблон, управлять выравниванием, заполнением и отображением чисел. Ниже представлены основные подходы с акцентом на современный и эффективный способ.

Как эффективно форматировать строки в Python 3.6+?

Наиболее производительный и читаемый способ - использование f-строк (f-strings). Они позволяют подставлять значения напрямую внутри фигурных скобок и выполнять выражения.


name = "Анна"
age = 28
height = 1.75
# Простая подстановка
print(f"Имя: {name}, возраст: {age} лет")
# Вывод: Имя: Анна, возраст: 28 лет

# Выравнивание и заполнение
print(f"{name:>10}")  # выравнивание вправо, ширина 10
print(f"{age:03d}")    # заполнение нулями до 3 знаков
# Вывод:
#       Анна
# 028
  

ввод через пробел python (ввод и вывод чисел через пробел в python)

Имя: Анна, возраст: 28 лет
      Анна
028
  

вывод через пробел python (вывод через пробел в python)

Возможные проблемы: Нельзя использовать обратную косую черту внутри фигурных скобок. Для вывода фигурных скобок нужно дублировать их: f"{{фигурная скобка}}". Ошибка синтаксиса возникает, если забыть префикс f.

Как использовать метод str.format() для гибкого форматирования?

Метод str.format() работает с индексами или именованными параметрами. Подходит для версий Python 2.7+ и 3.x.


print("Имя: {0}, возраст: {1} лет".format(name, age))
print("Имя: {n}, возраст: {a}".format(n=name, a=age))
  

Python print sep (параметр sep в print python)

Имя: Анна, возраст: 28 лет
Имя: Анна, возраст: 28 лет
  

Python форматирование чисел (форматирование чисел при выводе в python)

Типичная ошибка: Несоответствие количества аргументов и заполнителей. Если аргументов меньше, возникает IndexError. Рекомендуется использовать именованные аргументы для ясности.

Как применить старый стиль с оператором %?

Оператор % (как в языке C) до сих пор поддерживается, но считается устаревшим. Удобен для простых случаев.


print("Имя: %s, возраст: %d года" % (name, age))
  

формат вывода строки python (формат вывода строки в python)

Имя: Анна, возраст: 28 года
  

список без скобок python (вывод списка без скобок в python)

Проблемы: Трудно читать при большом количестве переменных. Не гибкое выравнивание. Ошибка типа (TypeError) при несовпадении спецификатора и типа данных.

Как создать шаблон с помощью Template из string?

Класс Template модуля string подходит, когда строки приходят из ненадёжного источника (избегает уязвимостей).


from string import Template
t = Template("Привет, $name! Тебе $age лет.")
print(t.substitute(name="Петр", age=30))
  

Python число вывести текстом (вывод числа прописью в python)

Привет, Петр! Тебе 30 лет.
  

Особенность: Если переменная не определена, substitute вызовет KeyError. Можно использовать safe_substitute() для частичной замены.

Расширенные примеры форматирования строк

Малоизвестные приёмы, которые расширяют возможности форматирования.

Форматирование чисел с плавающей точкой

Пример

pi = 3.14159265358979
# Ограничение до 2 знаков после запятой
print(f"{pi:.2f}")
# Вывод с разделителем тысяч
print(f"{1000000:,.2f}")
# Научная нотация
print(f"{pi:.2e}")
3.14
1,000,000.00
3.14e+00

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

Пример

text = "тест"
# По центру, ширина 20, заполнение '*'
print(f"{text:*^20}")
# Влево с заполнением '-' и шириной 10
print(f"{text:-<10}")
********тест********
тест------

Использование f-строк с выражениями и функциями

Пример

def double(x):
    return x * 2
x = 5
print(f"Удвоенное значение: {double(x)}")
print(f"Прямое вычисление: {x * 2 + 1}")
# Условное выражение внутри f-строки
print(f"{x} - {'чётное' if x % 2 == 0 else 'нечётное'}")
Удвоенное значение: 10
Прямое вычисление: 11
5 - нечётное

Форматирование даты и времени

Пример

from datetime import datetime
now = datetime.now()
# Формат через f-строку
print(f"{now:%Y-%m-%d %H:%M:%S}")
# Использование format с объектом
print("{:%d/%m/%Y}".format(now))
2025-03-21 10:15:30
21/03/2025

Вложенное форматирование и динамическая ширина

Пример

width = 12
text = "данные"
# Ширина берётся из переменной
print(f"|{text:^{width}}|")
# Можно комбинировать с заполнителем
fill = '*'
print(f"|{text:{fill}^{width}}|")
|   данные   |
|***данные***|

Форматирование словарей и атрибутов объектов

Пример

data = {'name': 'Ольга', 'points': 95}
# Доступ по ключу
print(f"Студент {data['name']} набрал {data['points']} баллов")
# То же с format:
print("Студент {d[name]} набрал {d[points]} баллов".format(d=data))
Студент Ольга набрал 95 баллов
Студент Ольга набрал 95 баллов

Работа с процентами и шестнадцатеричными числами

Пример

ratio = 0.876
# Процент с двумя знаками
print(f"Прогресс: {ratio:.2%}")
# Шестнадцатеричное представление числа 255
print(f"255 в hex: {255:#x}")
# Двоичное с ведущими нулями
print(f"15 в бинарном: {15:08b}")
Прогресс: 87.60%
255 в hex: 0xff
15 в бинарном: 00001111

Обработка ошибок при форматировании с Template

Пример

from string import Template
t = Template("$user: $count")
# safe_substitute не выбрасывает исключение, если ключа нет
print(t.safe_substitute(user='Мария'))
# Вывод: Мария: $count

Формат вывода строки в Python - comments

En
формат вывода строки python (python)