Способы вывода строк с форматированием в 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