Перейти к содержимому

Форматирование строк в Python

Python — популярный язык программирования, известный своей простотой, читаемостью и универсальностью. Одна из ключевых возможностей Python — форматирование строк, которое позволяет разработчикам создавать динамические строки, подставляя переменные и выражения в специальные места (плейсхолдеры) внутри строки. В этом руководстве мы рассмотрим следующие темы:

  • Что такое форматирование строк?
  • Старый способ форматирования строк
  • Новый способ форматирования строк
  • Форматирование чисел
  • Форматирование строк
  • Форматирование дат и времени
  • Продвинутое форматирование строк

Что такое форматирование строк?

Форматирование строк — это процесс создания отформатированных строк путем подстановки значений в плейсхолдеры внутри строки. В Python существует несколько способов форматирования строк, включая оператор %, метод format() и f-строки. F-строки являются рекомендуемым подходом в современном Python.

Старый способ форматирования строк

Старый способ форматирования строк использует оператор % для подстановки значений в плейсхолдеры внутри строки. Вот пример:

String formatting with % operator in Python

python
name = "John"
age = 25
print("My name is %s and I am %d years old." % (name, age))

В этом примере %s и %d являются плейсхолдерами для переменных name и age соответственно. Значения этих переменных подставляются в плейсхолдеры с помощью оператора %.

Новый способ форматирования строк

Метод format() — это более современный способ форматирования строк, который подставляет значения в плейсхолдеры внутри строки. Вот пример:

String formatting by format method in Python

python
name = "John"
age = 25
print("My name is {} and I am {} years old.".format(name, age))

В этом примере {} являются плейсхолдерами для переменных name и age соответственно. Значения этих переменных подставляются в плейсхолдеры с помощью метода format().

Форматирование чисел

Python предоставляет различные способы форматирования чисел. Вот несколько примеров:

Formatting numbers in a string in Python

python
x = 123.456789
print("The number is {:.2f}".format(x))
print("The number is {:,}".format(x))
print("The number is {:+}".format(x))

В первом примере {:.2f} форматирует число до двух знаков после запятой. Во втором примере {: ,} форматирует число с разделителем в виде запятой. В третьем примере {:+} форматирует число со знаком плюс для положительных чисел и знаком минус для отрицательных.

Форматирование строк

Python предоставляет различные способы форматирования строк. Вот несколько примеров:

Formatting strings in various ways in Python

python
name = "John"
print("Hello, %s!" % name)
print("Hello, {}!".format(name))
print(f"Hello, {name}!")

В первом примере %s является плейсхолдером для переменной name. Во втором примере {} является плейсхолдером для переменной name. В третьем примере {name} является плейсхолдером для переменной name внутри f-строки.

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

Python предоставляет различные способы форматирования дат и времени. Вот несколько примеров:

Formatting date and time in Python

python
import datetime

date = datetime.datetime.now()
print("The date and time is {}".format(date))
print("The date and time is {: %B %d, %Y}".format(date))

В первом примере {} является плейсхолдером для переменной date, которая представляет собой объект datetime. Во втором примере {: %B %d, %Y} форматирует объект даты в строку в формате "Месяц День, Год".

Продвинутое форматирование строк

Python предлагает несколько дополнительных техник, которые делают форматирование строк еще более гибким и мощным.

Одна из таких техник — использование именованных плейсхолдеров. Вместо позиционных плейсхолдеров можно использовать именованные, чтобы сделать код более читаемым и понятным. Вот пример:

Print a dictionary's values in the desired format in Python using named placeholders

python
person = {"name": "John", "age": 25}
print("My name is {name} and I am {age} years old.".format(**person))

В этом примере {name} и {age} — это именованные плейсхолдеры, соответствующие ключам "name" и "age" в словаре person. Оператор ** используется для распаковки словаря и передачи его значений в качестве именованных аргументов методу format().

Еще одна полезная техника — использование спецификаторов формата для управления шириной, точностью и выравниванием плейсхолдеров. Вот несколько примеров:

format specifiers to control the width, precision, and alignment of placeholders in Python

python
x = 123.456789
print("{:<10.2f}".format(x))
print("{:,.2f}".format(x))

В первом примере {:<10.2f} форматирует число до двух знаков после запятой и выравнивает его по левому краю в поле шириной 10. Во втором примере {:,.2f} форматирует число с разделителем в виде запятой и двумя знаками после запятой.

Помимо этих техник, Python также предлагает несколько встроенных спецификаторов формата, которые можно использовать для форматирования строк, чисел и дат/времени. Вот несколько примеров:

Python built-in various formatting ways

python
x = 123
date = datetime.datetime.now()
print("The number is {:x}".format(x))
print("The number is {:o}".format(x))
print("The number is {:b}".format(x))
print("The number is {:e}".format(x))
print("The date and time is {}".format(date))

В этих примерах {:x} форматирует число как шестнадцатеричную строку, {:o} — как восьмеричную, {:b} — как двоичную, а {:e} — в экспоненциальной (научной) нотации. Для дат и времени format() использует строковое представление объекта, если только вы не форматируете значение отдельно.

Заключение

В этом руководстве мы рассмотрели основы форматирования строк в Python, включая старый и новый способы форматирования строк, форматирование чисел, строк, дат и времени, а также продвинутые техники форматирования. Применяя эти методы, вы сможете создавать динамичные, гибкие и мощные строки в своем коде на Python, что поможет решать сложные задачи и достигать поставленных целей.

Практика

Какие из перечисленных методов являются допустимыми для форматирования строк в Python, как описано в содержании указанной страницы?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.