Экранирование python что это
Перейти к содержимому

Экранирование python что это

  • автор:

Python: экранирование кавычек

В этой краткой статье рассматривается использование одинарных, двойных и тройных кавычек в Python.

Обновлено: 2023-06-22 20:07:51 Сергей Бензенко автор материала

Одинарные и двойные кавычки — базовое использование

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

>>> quotes_single = 'a_string' >>> quotes_double = "a_string" >>> quotes_single == quotes_double True

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

>>> "mixed quotes' File "", line 1 "mixed quotes' ^ SyntaxError: EOL while scanning string literal >>> 'mixed quotes" File "", line 1 'mixed quotes" ^ SyntaxError: EOL while scanning string literal

Варианты экранирования

В Python если строка содержит специальные символы, такие как кавычки, мы должны экранировать их. Пример неправильного использования:

>>> 'It's a bad example.' File "", line 1 'It's a bad example.' ^ SyntaxError: invalid syntax

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

>>> 'It's a good example.' "It's a good example." >>> "It's a good example." "It's a good example."

Если строка содержит двойные кавычки, можно использовать одинарные. Тогда не придется экранировать двойные кавычки. Пример:

>>> 'She said, "Thank you!"' 'She said, "Thank you!"'

Но если в строке есть одинарные и двойные кавычки, и вы не экранируете содержащие строку, это приведет к синтаксической ошибке.

>>> print('She said, "Thank you! It's mine."') File "", line 1 print('She said, "Thank you! It's mine."') ^ SyntaxError: invalid syntax >>> print('She said, "Thank you! It's mine."') She said, "Thank you! It's mine."

Тройные кавычки

Обозначение строк, содержащих одинарные и двойные кавычки

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

>>> print('''She said, "Thank you! It's mine."''') She said, "Thank you! It's mine."

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

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

>>> print("""She said, "Thank you! It's mine."""") File "", line 1 print("""She said, "Thank you! It's mine."""") ^ SyntaxError: EOL while scanning string literal

Многострочные строки

Также тройные кавычки используются для представления многострочной строки. Пример:

>>> print("""Hello . World . !""") Hello World !

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

>>> def multiple_line_comment(a, b): . ''' . a is a string # other additional description . b is a list of integers # other additional description . ''' . pass . >>> print(multiple_line_comment.__doc__) a is a string # other additional description b is a list of integers # other additional description

Мы сразу видим, что является многострочным комментарием для функции.

Выводы

В этой статье мы рассмотрели применение одинарных, двойных и тройных кавычек в Python. Краткий обзор вариантов использования:

Одинарные и двойные кавычки

  • Используются для определения строк.
  • Применяйте одинарные кавычки для определения строк, чтобы избежать необходимости экранирования двойных кавычек в строке.

Тройные кавычки:

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

Сергей Бензенко автор-переводчик статьи « Single, Double, and Triple Quotes in Python »

Функция escape() модуля re в Python

Экранирование специальных символов регулярных выражений

Синтаксис:
import re re.escape(pattern) 
Параметры:
  • pattern — строка с шаблоном регулярного выражения.
Возвращаемое значение:
Описание:

Функция escape() модуля re выполняет экранирование специальных символов в шаблоне. Это полезно, если требуется сопоставить произвольную строку литерала, которая может содержать метасимволы регулярных выражений.

Примеры использования:
>>> import re >>> print(re.escape('http://www.python.org')) # http://www\.python\.org >>> import string >>> legal_chars = string.ascii_lowercase + string.digits + "!#$%&'*+-.^_`|~:" >>> print('[%s]+' % re.escape(legal_chars)) # [abcdefghijklmnopqrstuvwxyz0123456789!\#\$%\&'\*\+\-\.\^_`\|\~:]+ >>> operators = ['+', '-', '*', '/', '**'] >>> print('|'.join(map(re.escape, sorted(operators, reverse=True)))) # /|\-|\+|\*\*|\* 

Функция escape() не должна использоваться для замены строки в re.sub() и re.subn() , только обратные косые черты должны быть экранированы. Например:

>>> digits_re = r'\d+' >>> sample = '/usr/sbin/sendmail - 0 errors, 12 warnings' >>> import re >>> print(re.sub(digits_re, digits_re.replace('\\', r'\\'), sample)) # /usr/sbin/sendmail - \d+ errors, \d+ warnings 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Синтаксис регулярных выражений
  • Функция compile() модуля re
  • Флаги, используемые в функции re.compile()
  • Функция search() модуля re
  • Функция match() модуля re
  • Функция fullmatch() модуля re
  • Функция finditer() модуля re
  • Функция split() модуля re
  • Функция findall() модуля re
  • Функция sub() модуля re
  • Функция subn() модуля re
  • Функция escape() модуля re
  • Функция purge() модуля re
  • Исключение error() модуля re
  • Объект регулярного выражения Pattern модуля re
  • Объект совпадения с шаблоном Match модуля re

ХОЧУ ПОМОЧЬ
ПРОЕКТУ

Артём Санников

Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.

Главная › Языки программирования › Python › Работа со строками › Экранирование кавычек в Python

Экранирование кавычек в Python

Допустим, вам по какой-то причине нужно разместить двойные кавычки внутри двойных кавычек. Как же это сделать? Всё довольно просто, есть метод ,который называется — экранирование.

Экранирование (\) — это метод, который отменяет действие кавычек и переводит их в обычную последовательность символов и теперь они воспринимаются, как часть текста. Чтобы применить экранирование, нужно воспользоваться символом — обратный слэш (\).

messages = "Данные переменной \"messages\"" print(messages)

Записи по теме

  • Функция center() в Python
  • Функция startswith() и endswith() в Python
  • Функция ord() и chr() в Python
  • Функция ljust() и rjust() в Python
  • Функция zfill() в Python
  • Обращение по индексу в строке Python
  • Функция replace() в Python
  • Длина строки в Python

Python: Экранированные последовательности

Как видите, результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа \n :

print("- Are you hungry?\n- Aaaarrrgh!") # => - Are you hungry? # => - Aaaarrrgh! 

\n — это пример экранированной последовательности (escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.

Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:

- Привет!¶ - О, привет!¶ - Как дела? 

Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.

Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:

  • табуляция \t — разрыв, который получается при нажатии на кнопку Tab
  • возврат каретки \r — работает только в Windows

Распознать такую управляющую конструкцию в тексте можно по символу \ . Программисты часто используют перевод строки \n , чтобы правильно форматировать текст. Например, напишем такой код:

print("Gregor Clegane\nDunsen\nPolliver\nChiswyck") 

Тогда на экран выведется:

Gregor Clegane Dunsen Polliver Chiswyck 

Когда работаете с символом перевода, учитывайте следующие моменты:

  1. Не важно, что стоит перед или после \n : символ или пустая строка. Перевод обнаружится и выполнится в любом случае
  2. Строка может содержать только \n :
 print('Gregor Clegane') # Строка с текстом print("\n") # Строка с невидимым символом перевода строки print('Dunsen') # Строка с текстом 

Программа выведет на экран:

 Gregor Clegane Dunsen 
  1. В коде последовательность \n выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ
  2. Если нужно вывести \n как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один \ в начале. Последовательность \\n отобразится как символы \ и n , которые идут друг за другом:
print("Joffrey loves using \\n") # => Joffrey loves using \n 

В Windows для перевода строк по умолчанию используется \r\n . Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.

Дело в том, что последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки, о чем мы поговорим позже. По этой причине в среде разработчиков принято всегда использовать \n без \r .

В таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n .

Задание

Напишите программу, которая выводит на экран:

- Did Joffrey agree? - He did. He also said "I love using \n". 

При этом программа использует только один print() , но результат на экране должен выглядеть в точности, как показано выше.

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

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

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

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

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

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

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

Полезное

  • Обязательно поэкспериментируйте с выводом разных строк на сайте https://replit.com/languages/python3
  • История перевода строки

Определения

  • Экранированная последовательность — специальная комбинация символов в тексте. Например, \n — это перевод строки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *