Различные способы форматирования строк в Python: 3 лучших метода

Опубликовано: 2021-02-23

Форматирование строк — важная функция языков программирования для форматирования или вставки в строки пользовательских значений и позиций. В языке C был один способ сделать это, с которым вы могли быть знакомы, если у вас есть опыт работы с языком C. Однако Python поддерживает не 1 и не 2, а 3 различных способа форматирования строк. Каждый способ имеет свои преимущества и недостатки, которые мы увидим в этом уроке. Мы также увидим, какой из трех методов является наиболее используемым и эффективным.

Изучайте онлайн-курсы по науке о данных от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

К концу этого урока вы будете знать следующее:

  • Различные способы форматирования строк
  • Их использование с примерами
  • Какой путь предпочтительнее

Оглавление

Различные способы форматирования строк

Python получает несколько обновлений для улучшения форматирования строк. Давайте пройдемся по каждому из них один за другим.

Метод 1: форматирование строки в стиле C

Python включает старый способ форматирования строк с использованием специальных символов для каждого типа данных. Этот старый добрый метод форматирования строк был заимствован из языка C и до сих пор очень эффективен. Спецификатор формата строки «%», за которым следует специальный символ для каждого типа данных, используется для форматирования строк.

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

число = 8
имя = «розовый человек»
print("Имя %s и число %d" %(имя, число))

#Выход
>> «Имя Пинкман и номер 8»

Как видите, спецификатор формата %s использовался для форматирования имени строки, а %d — для форматирования целого числа. Точно так же существует спецификатор формата для числа с плавающей запятой. Давайте проверим и это.

число = 4,32
лис = [ 1 , 3 , 5 ]
print( "список равен %s, а число с плавающей запятой равно %f" %(lis, num))

#Выход
>> список [ 1 , 3 , 5 ] и число с плавающей запятой 4.320000

В приведенном выше примере я использую спецификатор формата %f для форматирования значения с плавающей запятой. Здесь следует отметить две вещи. Во-первых, значение с плавающей точкой печатается как 4,320000, а не просто 4,32. Почему так? Это связано с тем, что Python по умолчанию использует точность 6 знаков после запятой для чисел с плавающей запятой. Во-вторых, я напечатал список, используя спецификатор строкового формата. Это не означает, что спецификатор формата %s может принимать данные любого типа. Он просто преобразует его в строку и печатает. Таким образом, печатаемый список представляет собой строку, а не список.

Хорошо, а как указать, сколько десятичных знаков требуется?

print("список равен %s, а число с плавающей запятой с точностью до 2 пунктов равно %.2f" %(lis, num))

#Выход
>> list — это [ 1 , 3 , 5 ] , а число с плавающей запятой 4,32.

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

print("список равен %(a)s, а число с плавающей запятой равно %(b)f" %{"b": num, "a": lis})

#Выход
>> список [ 1 , 3 , 5 ] и число с плавающей запятой 4.320000

И как видите, это очень громоздко писать.

Итак, подведем итог: 3 наиболее часто используемых спецификатора формата:

  1. %s для строк
  2. %d для целых чисел
  3. %.<десятичная точность>f для чисел с плавающей запятой

Способ 2: форматирование строк в новом стиле

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

имя = «скайлер»
print("Привет, меня зовут {}".format(name))

#Выход
>> Привет, меня зовут Скайлер

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

Пример с цифрами:

число = 3
интервал = 4,34
имя = "Джесси"

print( "Привет, меня зовут {}, число {} и число с плавающей запятой {}" .format(name, num, int))

#Выход
>> Привет, меня зовут Джесси , число 3 и число с плавающей запятой 4,34 .

Аккуратный! Как видите, ему нужно, чтобы переменные передавались в метод форматирования в том порядке, в котором они использовались в строке. Другой способ использования метода формата, не требующий от нас передачи всех переменных в правильном порядке:

print("Привет, меня зовут {name}, число {num} и число с плавающей запятой {int}".format(int=int, num=num, name=name))

#Выход
>> Привет, меня зовут Джесси , число 3 и число с плавающей запятой 4,34 .

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

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

print("Привет, меня зовут {0}, число {1}, число с плавающей запятой {2}".format(name, num, int))

#Выход
>> Привет, меня зовут Джесси , число 3 и число с плавающей запятой 4,34 .

Способ 3: использование F-строк

Представленные в Python 3.6 f-строки — это самый простой и эффективный способ форматирования строк. Их также называют форматированными строковыми литералами. Они используют литерал f в начале строки, чтобы сообщить python обработать ее как отформатированную строку. Заполнители содержат фактические переменные, которые необходимо поместить в эту позицию.

Давайте посмотрим на пример.

имя = «Гейзенберг»
bill = 100.43print(f"Имя {name} и счет {bill}")

#Выход
>> Имя Гейзенберг и счет 100,43 _

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

а = 5
б = 8

print( f"Сумма равна {a+b} " )

#Выход
>> Сумма равна 13

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

print( f"Имя {name.upper()} " )

#Выход
>> Меня зовут ХАЙЗЕНБЕРГ

Кроме того, мы можем использовать строки f для прямого возврата значения из функций.

Def Combiner (имя, возраст, деньги):
return f”{имя} в возрасте {возраст} и имеет зарплату {деньги}”

Солу Гудману 45 лет , его зарплата составляет 2 000 000.

Как мы видим, когда мы передаем функции непосредственно заполнителям, он вызывает функции и напрямую помещает выходные данные в фигурные скобки. Ясно, что этот метод форматирования строк является наиболее эффективным и простым в написании.

Оформить заказ: вопросы и ответы на собеседовании по Python

Прежде чем ты уйдешь

Форматирование строк — это обычная задача, и способ, которым Python представил метод форматирования и строки f, делает ее очень простой для людей, работающих с Python. F-строки являются наиболее часто используемым и предпочтительным способом работы со строковым форматированием, поскольку их очень легко писать и поддерживать. Кроме того, это делает код более питоническим! Под капотом строки f используют протокол __format__. Литерал f — это просто синтаксический сахар, который Python предлагает своим пользователям, чтобы упростить нам написание форматирования строк.

Если вам интересно узнать о науке о данных, ознакомьтесь с программой IIIT-B & upGrad Executive PG по науке о данных , которая создана для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические семинары, наставничество с отраслевыми экспертами, 1 -на-1 с отраслевыми наставниками, более 400 часов обучения и помощи в трудоустройстве в ведущих фирмах.

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

1. Встроенный в Python метод string format() преобразует предоставленную строку в более полезный вывод. Функция format() в Python3 — это один из методов форматирования строк, который допускает множественные замены, а также форматирование значений. Метод format() использует позиционное форматирование для объединения элементов в строке.
2. Строка может быть отформатирована с помощью множества пар фигурных скобок. Если в длинной строке требуется замена другой переменной, можно добавить второй набор фигурных скобок и передать в процедуру второе значение.
3. Функция format() в Python принимает любое количество параметров. Тем не менее, он в первую очередь разделен на следующие два типа параметров.
а. Позиционные параметры — это список параметров, которые можно получить, поместив индекс параметра в фигурные скобки (index).
б. Параметры ключевого слова — это список параметров ключ=значение, доступ к которым можно получить с помощью ключа параметра внутри фигурных скобок.
4. Метод format() возвращает отформатированную строку. Функция format() считывает тип переданных ей аргументов и форматирует их в соответствии с кодами формата в строке.

Как вы печатаете без новой строки в Python 3?

Добавьте дополнительный аргумент в свой метод печати в Python 3, чтобы сообщить компьютеру, что вы не хотите, чтобы следующая строка находилась на новой строке. Рассмотрим следующий сценарий.
print('Добро пожаловать!', end = ')
В этом случае любая дальнейшая функция печати появится в той же строке.

Можем ли мы преобразовать строку в число с плавающей запятой в Python?

1. Они являются строковыми объектами, если мы получаем значение с плавающей запятой посредством пользовательского ввода через терминал, а также читаем его из файла. В результате мы должны явно преобразовать их в число с плавающей запятой, чтобы выполнить необходимые операции, такие как сложение, умножение и т. д.
2. Метод float() в Python можно использовать для преобразования строки в число с плавающей запятой. Это встроенная функция для преобразования числа с плавающей запятой в объект. Внутри функция float() вызывает функцию __float__() предоставленного объекта.