Python string format экранирование

f-строки в Python

Форматирование строк – это их оформление с помощью методов, предоставляемых конкретным языком программирования. В Python есть различные техники форматирования строк. Сейчас мы рассмотрим новый вариант – f-строки. Он стал доступен начиная с Python 3.6.

f-строки оцениваются во время выполнения программы. Этот подход обеспечивает лучшую скорость по сравнению с более старыми способами форматирования.

Также f-строки отличаются более простым синтаксисом. Каждый оператор f-строк состоит из двух частей. Первая – символ f или F, а вторая – строка, которую мы хотим отформатировать. Строка заключается в одинарные, двойные или тройные кавычки.

# Также можно использовать F, '', "", """""" f"string"

На месте string нужно поместить нашу строку, которую мы хотим отформатировать.

Примечание редакции: о красивом выводе чисел читайте в статье “Форматирование чисел в Python”.

Отображение переменных

Раньше для форматирования строк мы чаще всего использовали метод str.format() . Но теперь у нас появился новый способ, позволяющий работать вдвое быстрее.

Переменные, заключенные в фигурные скобки <> , выводятся так, как если бы их передали в оператор print. Рассмотрим пример.

# Объявление переменных name = "Datacamp" type_of_company = "Educational" # Заключаем переменные в <>, чтобы вывести их значение print(f" is an company.") # Результат: # Datacamp is an Educational company.

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

# Объявление переменных name = "Datacamp" type_of_company = "Educational" # Заключаем переменные в <>, чтобы вывести их значение print(F" is an company.") # Результат: # Datacamp is an Educational company.

Выражения

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

Просто поместите выражение, которое нужно оценить, внутрь фигурных скобок <> . f-строка оценит его во время выполнения программы. Это отличная возможность, которая экономит ваше время и код.

Давайте посмотрим примеры различных типов выражений.

# Арифметическое выражение print(f"") # Результат: # 25

Мы также можем вызывать функции внутри <> . Давайте определим функцию greet() и вызовем ее в f-строке.

def greet(name): return "Hello, " + name # Вызов функции с использованием f-строки name = "Datacamp" print(f"") # Результат: # Hello, Datacamp

Таким же образом мы можем вызывать предопределенные методы. Давайте посмотрим.

# Вызов метода title, который переводит первую букву каждого слова в верхний регистр string = "datacamp is an educational company." print(f"") # Результат: # Datacamp Is An Educational Company.

Что еще мы можем сделать с f-строками? Можем ли мы отобразить объект? Да, можем. Это аналогично выводу переменных.

class Sample: def __init__(self, name, age): self.name = name self.age = age # Этот метод будет вызываться при распечатке объекта def __str__(self): return f' is years old.' john = Sample("John", 19) # Это вызовет метод __str__() print(f"") # Результат: # John is 19 years old.

Специальные символы

Что, если мы хотим отобразить специальные символы, такие как <> , \’ , \» , которые в Python имеют особое значение? Можем ли мы использовать символ экранирования (обратный слэш) внутри f-строки? Давайте разбираться.

Читайте также:  Accelerated es6 javascript training

Вывод кавычек

В f-строке можно использовать любые кавычки (одиночные, двойные или тройные). Для печати кавычек следует использовать символ экранирования. Но в выражениях использовать обратную косую черту нельзя, поэтому мы должны поместить ее вне фигурных скобок.

Рассмотрим это на примерах.

name = "Datacamp" # Отображение одинарных кавычек print(f"Hello, \'\'") print() # Отображение двойных кавычек print(f"Hello, \"\"") # Результат: # Hello, 'Datacamp' # Hello, "Datacamp"

Рассмотрим другие варианты использования кавычек в f-строках.

f'' # Результат: # 'Hello, Datacamp'
f"" # Результат: # 'Hello, Datacamp'
f"""Hello, Datacamp""" # Результат: # 'Hello, Datacamp'
f'''Hello, Datacamp''' # Результат: # 'Hello, Datacamp'

Мы также можем заключить фигурные скобки в тройные кавычки.

Использовать обратную косую черту внутри фигурных скобок в f-строке нельзя. Попытавшись сделать это, вы получите ошибку.

File "", line 1 print(f"") ^ SyntaxError: f-string expression part cannot include a backslash

Вывод фигурных скобок

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

Если вы хотите отобразить два набора скобок с помощью f-строки, то вам придется использовать четыре набора скобок.

Словари

Мы должны быть немного осторожны, работая с ключами словаря внутри f-строки. Для ключей и f-строки нужно использовать разные кавычки.

person = print(f" is years old.") # Результат: # John is 19 years old.
person = print(f' is years old.')
File "", line 2 print(f' is years old.') ^ SyntaxError: invalid syntax

Я надеюсь, прочитав эту статью, вы узнали что-то новое о Python. Успешного кодинга 🙂

Перевод статьи Hafeezul Kareem Shaik «f-string Formatting in Python».

Источник

Форматирование в Python с помощью f-строк

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

Вступление

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

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

f-строки исполняются при исполнении самой программы. Это работает быстрее других методов.

У f-строк более простой синтаксис в сравнении с другими техниками форматирования Python. Эта особенность будет рассмотрена на примерах.

Синтаксис

Каждая инструкция f-строки состоит из двух частей: символа f (или F ) и строки, которую нужно форматировать. Строка должна быть в одинарных, двойных или тройных кавычках.

# мы также можем использовать F, '', ''''', """""" f"string" 

На месте string нужно написать предложение, которое требуется отформатировать.

Отображение переменных

Раньше для форматирования использовался метод str.format() . Новый подход делает все вдвое быстрее.

Переменные в фигурных <> скобках отображаются в выводе как обычно в print . Стоит посмотреть на примере.

# объявление переменных name = "Pythonru" type_of_site = "Блог" # заключите переменную в <>, чтобы отобразить ее значение в выводе print(f" это .") 

Все значения переменных отобразились в выводе. С этим все понятно. Вместо f можно написать F .

# объявление переменных name = "Pythonru" type_of_site = "Блог" # заключите переменную в <>, чтобы отобразить ее значение в выводе print(F" это ?") 

Выражения

Что, если можно было бы выполнять арифметические выражения или вызовы функций в строке? Это удобно. И f-строки позволяют делать это.

Читайте также:  Kotlin set to string

Просто вставьте выражение в <> для исполнения. Оно выполнится при запуске программы. Экономит время и код.

Вот примеры отдельных выражений.

# объявление переменных print(f"") # вывод: 4 

Также в <> можно вызвать функцию. Определим функцию greet() и вызовем ее в f-строке.

def greet(name): return "Привет, " + name 
# вызов функции с использованием f-строки name = "Олег" print(f"") 

Также можно вызвать определенные заранее методы.

# метод title, делает первую букву каждого слова заглавной string = "pythonru это блог." print(f"") 

Что еще умеет f-строка? Отображать объект? Да. Работает это так же, как и при выводе переменных.

class Sample: def __init__(self, name, age): self.name = name self.age = age # этот метод будет вызываться при выводе объекта def __str__(self): return f'Имя: . Возвраст: .' 
user= Sample("Игорь", 19) # это вызовет метод __str__() print(f"") 

Специальные символы

Что делать, если нужно отобразить специальные символы, такие как <> , \’ , \» ? Они ведь используются в Python для определенных целей. Можно ли использовать экранирование внутри f-строки? Вот ответы на все вопросы.

Кавычки

Можно использовать любые кавычки (одинарные, двойные или тройные) в f-строке. Для их вывода потребуется использовать экранирование. Выражение f-строки не позволяет использовать обратную косую черту. Ее нужно размещать вне <> .

name = "Pythonru" # отображение одинарных кавычек print(f"Привет, \'\'") print() # отображение двойных кавычек print(f"Привет, \"\"") 
Привет, 'Pythonru' Привет, "Pythonru" 

Другие кавычки в f-строках.

f'' # 'Привет, Pythonru' f"" # 'Привет, Pythonru' f"""Привет, Pythonru""" # 'Привет, Pythonru' f'''Привет, Pythonru''' # 'Привет, Pythonru' 

<> также можно включать в тройные кавычки.

В f-строках нельзя использовать обратную косую черту в <> . Если попробовать, то будет ошибка.

Скобки

Двойные скобки нужны, чтобы вывести одни фигурные скобки в f-строке.

Если нужно вывести две пары скобок, то в выражении потребуется указать по четыре.

Словари

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

person = "name": "Игорь", "age": 19> print(f", лет.") 
person = "name": "Игорь", "age": 19> print(f'name']>, age']> лет.') 
File "", line 2 print(f', лет.') ^ SyntaxError: invalid syntax 

Источник

Python: How to print literal curly brace < or >in f-string and format string

Formatted string literals or f-string introduced in Python 3.6.

A formatted string literal or f-string is a string literal that is prefixed with ‘f’ or ‘F’. These strings may contain replacement fields, which are expressions delimited by curly braces <>. While other string literals always have a constant value, formatted strings are really expressions evaluated at run time.

If you want to print literal curly brace without any escape, you will get following:

>>> print(f"") File "", line 1 print(f"") ^ SyntaxError: f-string: expecting '>' >>> print(f">") File "", line 1 print(f">") ^ SyntaxError: f-string: single '>' is not allowed 

\ can not be used escape, you will get SyntaxError error:

>>> print(f"\") File "", line 1 print(f"\") ^ SyntaxError: f-string: expecting '>' >>> print(f"\>") File "", line 1 print(f"\>") ^ SyntaxError: f-string: single '>' is not allowed 

According f-string definition:

Escape sequences are decoded like in ordinary string literals (except when a literal is also marked as a raw string). After decoding, the grammar for the contents of the string is:

f_string ::= (literal_char | ">" | replacement_field)* replacement_field ::= "" f_expression ::= (conditional_expression | "*" or_expr) ("," conditional_expression | "," "*" or_expr)* [","] | yield_expression conversion ::= "s" | "r" | "a" format_spec ::= (literal_char | NULL | replacement_field)* literal_char ::= " or NULL> 

The parts of the string outside curly braces are treated literally, except that any doubled curly braces ‘>’ are replaced with the corresponding single curly brace. A single opening curly bracket ‘

>>> print(f"")  >>> print(f">>") > >>> print(f">") <> >>> print(f"foo>>") foo> 

This trick also apply to format string:

Format strings contain “replacement fields” surrounded by curly braces <>. Anything that is not contained in braces is considered literal text, which is copied unchanged to the output. If you need to include a brace character in the literal text, it can be escaped by doubling: >.

This following example is example how to print literal curly brace ‘

>>> print(" <>".format("Foo")) Traceback (most recent call last): File "", line 1, in module> ValueError: unexpected ' in field name >>> print("< <>".format("Foo"))  Foo >>> print(">> <>".format("Foo")) > Foo >>> print(">>> <>".format("Foo")) > Foo >>> print("<<>>> <>".format("Foo")) Traceback (most recent call last): File "", line 1, in module> IndexError: Replacement index 1 out of range for positional args tuple 

References

OmniLock — Block / Hide App on iOS

Block distractive apps from appearing on the Home Screen and App Library, enhance your focus and reduce screen time.

DNS Firewall for iOS and Mac OS

Encrypted your DNS to protect your privacy and firewall to block phishing, malicious domains, block ads in all browsers and apps

Источник

Оцените статью