Использовать f-строки (formatted string literals):
name = "Alice"
age = 30
print(f"{name:>10}: {age:<5}") # Выравнивание вправо, заполнение пробелами
Использовать метод .format()
:
name = "Bob"
age = 25
print("{:>10}: {:<5}".format(name, age))
Использовать str.ljust()
, str.rjust()
, str.center()
:
text = "Hello"
print(text.ljust(10)) # Выравнивание влево, заполнение пробелами
print(text.rjust(10)) # Выравнивание вправо, заполнение пробелами
print(text.center(10)) # Выравнивание по центру, заполнение пробелами
Для чисел можно указать количество знаков после запятой, ширину и заполнение:
pi = 3.14159
print(f"{pi:.2f}") # 2 знака после запятой
print(f"{pi:06.2f}") # Ширина 6, заполнение нулями, 2 знака после запятой
В Python есть несколько способов отформатировать вывод с отступом. Выбор зависит от ваших потребностей, но вот наиболее распространенные подходы:
Это современный и часто предпочтительный способ, появившийся в Python 3.6. Он позволяет встраивать выражения непосредственно в строку:
name = "Alice"
age = 30
city = "New York"
formatted_string = f"Имя: {name:>10}\nВозраст: {age:>10}\nГород: {city:>10}"
print(formatted_string)
# Вывод:
# Имя: Alice
# Возраст: 30
# Город: New York
{name:>10}
означает: выровнять значение переменной name
по правому краю в поле шириной 10 символов.<
- выравнивание по левому краю.^
- выравнивание по центру.Можно также использовать символ-заполнитель:
number = 42
formatted_string = f"Number: {number:05}"
print(formatted_string) # Output: Number: 00042
Здесь :05
означает, что число будет дополнено нулями до 5 знаков, если оно меньше.
str.format()
Это более старый, но все еще широко используемый способ форматирования строк:
name = "Bob"
score = 95
formatted_string = "Имя: {:>10}\nОценка: {:>10}".format(name, score)
print(formatted_string)
# Вывод:
# Имя: Bob
# Оценка: 95
Синтаксис аналогичен f-строкам: {:>10}
означает выравнивание по правому краю в поле шириной 10 символов.
%
(string formatting operator)Это самый старый метод, и его использование обычно не рекомендуется для нового кода, поскольку f-строки и str.format()
более читабельны и гибки. Однако его все еще можно встретить в старом коде:
product = "Widget"
price = 19.99
formatted_string = "Продукт: %10s\nЦена: %10.2f" % (product, price)
print(formatted_string)
# Вывод:
# Продукт: Widget
# Цена: 19.99
%10s
означает строку, выровненную по правому краю в поле шириной 10 символов.%10.2f
означает число с плавающей точкой, выровненное по правому краю в поле шириной 10 символов, с двумя знаками после запятой.textwrap
Модуль textwrap
полезен для форматирования длинных текстовых блоков. Он позволяет разбивать строки на строки заданной ширины и добавлять отступы.
import textwrap
long_text = """
This is a very long string that needs to be wrapped and indented.
It's important to format it correctly for readability.
"""
wrapped_text = textwrap.fill(long_text, width=40, initial_indent=' ', subsequent_indent=' ')
print(wrapped_text)
# Вывод:
# This is a very long string
# that needs to be wrapped and
# indented. It's important to
# format it correctly for
# readability.
textwrap.fill()
разбивает текст на строки заданной ширины.initial_indent
задает отступ для первой строки.subsequent_indent
задает отступ для всех последующих строк.В простых случаях можно просто добавить пробелы в начало строки:
message = "Hello, world!"
indented_message = " " + message # Добавляем два пробела
print(indented_message) # Output: Hello, world!
Этот метод подходит для статических отступов, но не для динамического форматирования.
str.format()
: Хороший выбор, если вы работаете с версиями Python до 3.6 или предпочитаете более явное форматирование.%
: Следует избегать в новом коде.textwrap
: Идеален для форматирования длинных текстовых блоков.