Share This
Связаться со мной
Крути в низ
Categories
//Форматирование строк в Python: format() и f-строки

Форматирование строк в Python: format() и f-строки

15.09.2021Category : Python

Давайте поговорим про форматирование строк в Python. Этот язык предоставляет несколько вариантов форматирования. Мы разберем метод str.format(), f-строки и «шаблонные» строки.

Но для начала давайте посмотрим, что считается «старым способом» форматирования.

Что такое форматирование строк в Python с помощью %?

Раньше форматирование строк происходило при помощи оператора %.

Вот основной синтаксис данного оператора:

"This is a string %s" % "string value goes here"

Вы можете создать строку и использовать %s внутри нее. %s здесь играет роль плейсхолдера. Дальше вы можете написать значок %, а затем – фактическое строковое значение, которое хотите использовать. Это значение в результате вставится на место плейсхолдера.

Вот базовый пример использования форматирования строки с помощью %.

print("Hi, my name is %s" % "Jessica")  # Запустив такую строчку кода, получим следующий результат: Hi, my name is Jessica

Этот метод часто называют старым, потому что Python 3 представил  метод str.format(), а также f-строки.

Что такое метод str.format() в Python?

Вот основной синтаксис данного метода:

"template string {}".format(arguments)

Внутри строки мы можем использовать фигурные скобки {}. Они играют роль плейсхолдеров для аргументов. Аргументы – это значения, которые будут подставлены в строку.

В этом примере мы хотим напечатать “Hello, my name is Jessica. I am a musician turned programmer.”

В строке у нас будет всего три пары фигурных скобок. Они выступят в роли плейсхолдеров для значений Jessica, musician и programmer.

"Hello, my name is {}. I am a {} turned {}."

Внутри скобок для str.format() мы будем использовать значения Jessica, musician и programmer следующим образом:

.format("Jessica", "musician", "programmer")

Таким образом, целиком наш код будет выглядеть так:

print("Hello, my name is {}. I am a {} turned {}.".format("Jessica", "musician", "programmer"))  # И наш желаемый результат: Hello, my name is Jessica. I am a musician turned programmer.

formatirovanie strok v python format i f stroki 455fd82 - Форматирование строк в Python: format() и f-строки

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Скачать ×

Позиционные аргументы

Также можно получить доступ к значению аргументов, используя в фигурных скобках индексы.

В этом примере метод .format() имеет два аргумента: “trumpet” и “drums”.

.format("trumpet", "drums")

Мы можем получить доступ к этим значениям внутри строки, обратившись к ним по индексам. {0} относится к первому аргументу (“trumpet”), а {1} — ко второму (“drums”).

"Steve plays {0} and {1}."

Вот наш полный код и предложение, которое будет выведено на экран:

print("Steve plays {0} and {1}.".format("trumpet", "drums"))  # Steve plays trumpet and drums.

Мы можем изменить этот пример и поменять местами номера индексов в строке. Вы заметите, что предложение изменилось, так как расположение аргументов поменялось.

print("Steve plays {1} and {0}.".format("trumpet", "drums"))  # Результат: Steve plays drums and trumpet.

Именованные аргументы

Эти аргументы состоят из пары «ключ-значение». Мы можем получить доступ к значению аргумента, используя ключ внутри фигурных скобок.

В следующем примере у нас есть два ключа: organization и adjective. Мы пропишем их внутри строки:

"{organization} is {adjective}!"

Метод .format() в качестве аргументов получает пары ключ-значение:

.format(organization="Pythonist", adjective="awesome")

Целиком наш код будет выглядеть следующим образом:

print("{organization} is {adjective}!".format(organization="Pythonist", adjective="awesome"))  # Output: # Pythonist is awesome!

Как смешивать именованные и позиционные аргументы

В str.format() вы можете использовать и именованные, и позиционные аргументы одновременно.

В этом примере мы собираемся написать небольшой рассказ о поездке в Диснейленд.

Сначала мы создадим несколько переменных для имени, числа, прилагательного и аттракциона Диснейленда.

name = "Sam" adjective = "amazing" number = 200 disney_ride = "Space Mountain"

Затем мы создадим нашу строку, используя различные аргументы. Также добавим n, чтобы компьютер создавал новую строку после каждого предложения.

"I went to {0} with {name}.nIt was {adjective}.nWe waited for {hours} hours to ride {ride}."

Внутри скобок в методе str.format() мы присвоим ключам name, adjective, hours и disney_ride в качестве значений наши переменные.

{0} будет иметь значение Disneyland.

.format("Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride)

Полностью наш код выглядит так:

name = "Sam" adjective = "amazing" number = 200 disney_ride = "Space Mountain"  print("I went to {0} with {name}.nIt was {adjective}.nWe waited for {hours} hours to ride {ride}."       .format("Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride))

Запустив его, мы получим следующий результат:

I went to Disneyland with Sam. It was amazing. We waited for 200 hours to ride Space Mountain.

Что такое f-строки?

Форматированные строковые литералы (или f-строки) позволяют включать выражения прямо внутри ваших строк. Непосредственно перед строкой вы помещаете f или F. Это сообщает компьютеру, что вы хотите использовать f-строку.

Вот так выглядит основной синтаксис:

variable = "some value" f"this is a string {variable}"

Вот простой пример, который поможет нам вывести на экран предложение Maria and Jessica have been friends since grade school.

name = "Jessica" print(f"Maria and {name} have been friends since grade school.")

Если мы вместо строчной f напишем заглавную, то всё будет работать точно так же.

name = "Jessica" print(F"Maria and {name} have been friends since grade school.")

Результаты последних двух примеров абсолютно идентичны:

Maria and Jessica have been friends since grade school.

Вы также можете использовать f-строку для форматирования данных из словаря.

Давайте рассмотрим следующий пример. У нас есть словарь. В нем представлены лучшие позиции мужских баскетбольных команд колледжей и количество выигранных ими игр из возможных 32.

rankings = {"Gonzaga": 31, "Baylor": 28, "Michigan": 25, "Illinois": 24, "Houston": 21}

При помощи цикла for и словарного метода items() можно просмотреть каждую из пар «ключ-значение» словаря rankings.

for team, score in rankings.items():

Внутри цикла for мы можем использовать f-строку для форматирования выводимых результатов.

Использование двоеточия в {team: 10} и {score: 10d} указывает компьютеру создать поле шириной 10 символов. Так мы получим ровные столбцы для наших данных.

Буква d внутри {score: 10d} обозначает десятичное целое число.

print(f”{team:10} ==> {score:10d}”)

Соберем наш код и получим следующую программу:

rankings = {"Gonzaga": 31, "Baylor": 28, "Michigan": 25, "Illinois": 24, "Houston": 21}  for team, score in rankings.items():     print(f"{team:10} ==> {score:10d}")

Теперь давайте запустим её. Вот, что у нас получится:

Gonzaga    ==>         31 Baylor     ==>         28 Michigan   ==>         25 Illinois   ==>         24 Houston    ==>         21

Что такое «шаблонные» строки?

«Шаблонные» строки – это строки в Python, которые используют плейсхолдеры для реальных значений.

Вот основной синтаксис такой строки:

Template("$placeholder").substitute(placeholder="real value")

Давайте рассмотрим пример, чтобы лучше понять, как это работает.

В этом примере мы хотим напечатать I love to learn with Pythonist!, используя шаблонные строки.

Чтобы их использовать, сначала нужно импортировать класс Template из стандартной библиотеки string.

from string import Template

Затем мы можем использовать класс Template и указать строку внутри скобок. Мы поставим знак доллара $ перед именем. Позже $name заменится реальным значением.

Template("I love to learn with $name!")

Затем мы добавляем .substitute() к шаблону и присваиваем name значение Pythonist.

.substitute(name=”Pythonist”)

Таким образом, мы получили следующий код:

from string import Template  print(Template("I love to learn with $name!").substitute(name="Pythonist"))  # Результат: # I love to learn with Pythonist!

Заключение

Форматирование строк в Python можно осуществлять по-разному.

Более старый способ форматирования заключался в использовании оператора %.

"This is a string %s" % "string value goes here"

%s действует как плейсхолдер для реального значения. Вы помещаете реальное значение после оператора %.

Этот метод часто называют старым, потому что Python 3 представил метод str.format() и f-строки.

В методе str.format() вы используете фигурные скобки для плейсхолдеров и круглые — для реальных значений. Этот метод может принимать именованные и позиционные аргументы.

“template string {}”.format(arguments)

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

variable = "some value" f"this is a string {variable}"

Вы также можете использовать шаблонные строки, импортировав класс Template из стандартной библиотеки. Шаблонные строки  – это строки Python, которые используют плейсхолдеры для реальных значений.

Template("$placeholder").substitute(placeholder="real value")

Мы надеемся, что эта статья оказалась для вас полезной, и желаем удачи в вашем путешествии в мире Python!

Перевод статьи «Python String Format – Python S Print Format Example».

formatirovanie strok v python format i f stroki 0a7abb2 - Форматирование строк в Python: format() и f-строки

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Скачать ×

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close