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
Когда работаете с символом перевода, учитывайте следующие моменты:
- Не важно, что стоит перед или после \n : символ или пустая строка. Перевод обнаружится и выполнится в любом случае
- Строка может содержать только \n :
print('Gregor Clegane') # Строка с текстом print("\n") # Строка с невидимым символом перевода строки print('Dunsen') # Строка с текстом
Программа выведет на экран:
Gregor Clegane Dunsen
- В коде последовательность \n выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ
- Если нужно вывести \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 — это перевод строки.