Форматирование строки в Python — одна из наиболее повторяющихся задач, с которыми вы сталкивались при разработке. Начиная с версии 3.6, Python f-strings представляет собой полностью новый способ форматирования строк. Они не только более удобочитаемы, но и менее подвержены ошибкам, чем другие способы форматирования, а также работают быстрее!
- Старые способы форматирования строки в Python
- Использование% -форматирования
- Вывод
- Форматирование более одной переменной
- Output
- Использование str.format ()
- Вывод
- Переменные ссылки по индексу
- Вывод
- Вывод
- Вывод
- Python f String: улучшенный способ форматирования строк
- Синтаксис
- xoxo = 'Weeknd' yello = 'Homer'print (f'Hello, {xoxo} and {yello}') Вывод Привет, Weeknd и Homer
- Вывод
- Вывод
- Вывод
- Выход
- Вывод
- Многострочные f-строки
- Заработная плата удаленного разработчика Python составляет 100 тыс.
- Словари в f-строках
- Результат
- Заключение
- См. также
Старые способы форматирования строки в Python
До выпуска Python 3.6 у вас было два основных способа встраивания выражений Python в строковые литералы для форматирования:
- % -форматирование
- str.format ()
Использование% -форматирования
Строковые объекты имеют встроенный оператор по модулю%, который можно использовать для форматирования строк.
xoxo = 'Weeknd'print (' Hello,% s '% xoxo)
Вывод
Hello, Weeknd
В этом примере мы напечатали xoxo в операторе печати. Теперь внутри оператора печати мы использовали% s, который действует как строковый заполнитель для переменной. А затем использовал оператор по модулю% с нашей строковой переменной.
% -форматирование не рекомендуется документами python , которые включают следующее примечание.
«Операции форматирования, описанные здесь, демонстрируют множество причуд, которые приводят к нескольким распространенным ошибкам (например, неправильному отображению кортежей и словарей).
Использование более новых форматированных строковых литералов или метода str.format () помогает избежать этих ошибок. Эти альтернативы также обеспечивают более надежные, гибкие и расширяемые подходы к форматированию текста ». (Источник)
Форматирование более одной переменной
Чтобы добавить более одной переменной, вы должны использовать кортеж этих переменных .
xoxo = 'Weeknd'yello =' Homer'print ('Привет,% s и% s'% (xoxo, yello))
Output
Hello, Weeknd and Homer
Из приведенных выше примеров вы можете видеть, что код читается, но мы все еще не используйте это, потому что, как только вы начнете использовать несколько параметров и более длинные строки, ваш код быстро станет намного труднее читаться. Вот почему сообщество Python не рекомендует этот подход.
Использование str.format ()
str.format () — это улучшение% -форматирования. Str.format () работает как обычная функция, которую вы вызываете, и ее можно расширить с помощью метода __format __ () для объекта, преобразуемого в строку. В методе str.format () заменяемые поля помечаются фигурными скобками, и эти фигурные скобки будут заменены строковыми переменными.
xoxo = 'Weeknd'yello =' Homer'print (' Привет и {}'. format (xoxo, yello))
Вывод
Привет, Уикенд и Гомер
Вы можно увидеть, что Код очень краток и ясен в отношении использования переменных в строке. Мы заменили две фигурные скобки на две переменные xoxo и
Переменные ссылки по индексу
Вы можете ссылаться на переменные в любом порядке, ссылаясь на их индекс.
xoxo = 'Weeknd'yello =' Homer'print ('Здравствуйте, {0} и {1} '. Format (xoxo, yello))
Вывод
Hello, Weeknd и Homer
В этом примере мы передали 0 и 1. Теперь речь идет об аргументах, которые вы передаете в функции format (). Итак, если вы укажете 0, это означает, что будет возвращен первый аргумент формата. 1 Означает секунду и т. Д.
Но если вы добавите имена переменных, вы получите то преимущество, что сможете передавать объекты, а затем ссылаться на параметры и методы между фигурными скобками.
data = {'xoxo': 'Weeknd', 'yello': 'Homer'} print ('Hello, {xoxo} and {yello}'. format (xoxo = data ['xoxo'], yello = data ['yello']))
Вывод
Hello, Weeknd and Homer
Есть еще один изящный способ ссылаться на параметры словаря. Метод. Вам просто нужно передать ** dictionary_name в функции format (), и все готово. Но убедитесь, что вы ссылаетесь на ключи словаря в фигурных скобках.
data = {'xoxo': 'Weeknd', 'yello': 'Homer'} print ('Hello, {xoxo} и {yello} '. format (** data))
Вывод
Hello, Weeknd and Homer
Мы получаем тот же результат.
Опять же, код, использующий str.format (), намного легче читается, чем код, использующий % — форматирование , но функция str.format () может быть довольно длинной, когда вы имеете дело с несколькими параметрами и более длинными строками. См. Следующий код.
Python f String: улучшенный способ форматирования строк
Python f String — это улучшение по сравнению с предыдущим форматированием методы. Вы можете прочитать больше на PEP8. Также называемые « форматированными строковыми литералами» f-strings — строковые литералы, которые имеют f в начале и фигурные фигурные скобки, содержащие выражения, которые будут заменены их значениями. Выражения оцениваются во время выполнения, а затем форматируются с использованием протокола __ format__ .
Синтаксис
Синтаксис похож на тот, который вы использовали с str.format (), но менее тупой.
print(f'{}')
xoxo = 'Weeknd' yello = 'Homer'print (f'Hello, {xoxo} and {yello}')
Вывод
Привет, Weeknd и Homer
В этом коде нам больше не нужно писать функцию format (); вместо этого будет достаточно f или F.
xoxo = 'Weeknd'yello =' Homer'print (F'Hello, {xoxo} and {yello} ')
Вывод
Hello, Weeknd и Homer
Вы можете видеть, что мы не использовали f с маленькой заглавной буквой. Вместо этого мы использовали заглавную F, и мы не получили никакой ошибки, которая означает, что F является допустимым синтаксисом.
f-строки в Python оцениваются во время выполнения, и вы можете поместить допустимые выражения Python в их. Это позволяет вам делать несколько изящных вещей.
xoxo = 'Weeknd'yello =' Homer'print (f '{5 + 6}')
Вывод
11
Вы также можете вызывать функции.
def add (a, b): return a + bprint (f'Сумма: {add (19, 21)} ')
Выход
сумма: 40
Вы можете видеть, что мы получили результат функции add (), который представляет собой сумму параметров a и b.
Вы также можете вызвать метод напрямую. Допустим, мы вызовем встроенный в Python метод sum () и посмотрим, получим ли мы правильный результат.
list = [1, 2, 3, 4, 5] print (f 'Сумма равна : {sum (list)} ')
Вывод
Сумма: 15
Многострочные f-строки
Python предоставляет различные способы создания многострочных строк. Это может быть полезно, когда у вас очень длинная строка, и вы можете разделить эту строку на многострочные.
В Python вы также можете иметь несколько f-строк.
language = 'Python'salary =' 100k'work = 'Remote'data = (f' {work} 'f' {язык} зарплата разработчика: 'f' {salary} ') print (data)
Заработная плата удаленного разработчика Python составляет 100 тыс.
В этом примере мы определили три переменные: каждая переменная записана в отдельной строке. Вы можете видеть, что многострочная строка заключена в круглые скобки. Это один из способов написания многострочных строк в Python. Но помните, что вам нужно поместить f перед каждой строкой многострочной строки.
Если вы не поместите f перед каждой строкой, тогда у вас будет просто обычный, старые строки, а не блестящие, причудливые f-строки.
Если вы хотите распределить строки по нескольким строкам, у вас также есть возможность экранировать возврат с помощью .
f-строки Python быстрее, чем% -formatting и str.format (). F-строки — это выражения, которые оцениваются во время выполнения, а не постоянные значения.
Словари в f-строках
Вы можете использовать разные типы кавычек внутри выражений. Просто убедитесь, что вы не используете тот же тип кавычек снаружи f-строки, что и в выражении.
print (f "{'Homer Simpson'}")
Также будьте осторожны при работе со словарями. Если вы собираетесь использовать одинарные кавычки для ключей Словаря, не забудьте убедиться, что вы используете двойные кавычки для f-строк, содержащих ключи.
data = { 'student': 'Taylor', 'enrollment': 21} print (f "Студент - {data ['student']}, а его зачисление - {data ['enrollment']}")
Результат
Учащимся является Тейлор, а его зачисление - 21
Если вы используете такой же тип кавычек вокруг словарные ключи, как вы делаете это вне f-строки, то кавычка в начале первого словарного ключа будет интерпретироваться как конец строки. В нашем примере внешние кавычки — это двойные кавычки, а внутренние кавычки для ключей словаря — одинарные.
Заключение
Вы Вы можете по-прежнему использовать старые подходы к форматированию строк, но с f-строками Python теперь у вас есть более короткий, читаемый и удобный способ, который является более быстрым и менее подверженным ошибкам. Упрощение вашей жизни с помощью f-строк — отличная причина начать использовать Python 3.6, если вы еще не сделали этого.
Наконец, пример Python f-строк завершен.
См. также
Многострочная строка в Python
Python rstrip ()
Строка обрезки Python
Удалить символ из строки
Python String replace ()