Различные способы форматирования строк в 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 наиболее часто используемых спецификатора формата:
- %s для строк
- %d для целых чисел
- %.<десятичная точность>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 часов обучения и помощи в трудоустройстве в ведущих фирмах.
1. Встроенный в Python метод string format() преобразует предоставленную строку в более полезный вывод. Функция format() в Python3 — это один из методов форматирования строк, который допускает множественные замены, а также форматирование значений. Метод format() использует позиционное форматирование для объединения элементов в строке. Добавьте дополнительный аргумент в свой метод печати в Python 3, чтобы сообщить компьютеру, что вы не хотите, чтобы следующая строка находилась на новой строке. Рассмотрим следующий сценарий. 1. Они являются строковыми объектами, если мы получаем значение с плавающей запятой посредством пользовательского ввода через терминал, а также читаем его из файла. В результате мы должны явно преобразовать их в число с плавающей запятой, чтобы выполнить необходимые операции, такие как сложение, умножение и т. д.Какие методы форматирования в Python 3 допускают множественные замены и форматирование значений?
2. Строка может быть отформатирована с помощью множества пар фигурных скобок. Если в длинной строке требуется замена другой переменной, можно добавить второй набор фигурных скобок и передать в процедуру второе значение.
3. Функция format() в Python принимает любое количество параметров. Тем не менее, он в первую очередь разделен на следующие два типа параметров.
а. Позиционные параметры — это список параметров, которые можно получить, поместив индекс параметра в фигурные скобки (index).
б. Параметры ключевого слова — это список параметров ключ=значение, доступ к которым можно получить с помощью ключа параметра внутри фигурных скобок.
4. Метод format() возвращает отформатированную строку. Функция format() считывает тип переданных ей аргументов и форматирует их в соответствии с кодами формата в строке. Как вы печатаете без новой строки в Python 3?
print('Добро пожаловать!', end = ')
В этом случае любая дальнейшая функция печати появится в той же строке. Можем ли мы преобразовать строку в число с плавающей запятой в Python?
2. Метод float() в Python можно использовать для преобразования строки в число с плавающей запятой. Это встроенная функция для преобразования числа с плавающей запятой в объект. Внутри функция float() вызывает функцию __float__() предоставленного объекта.