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 »
Python: Кавычки
В этом уроке мы разберемся, что такое строка и какую роль в коде играют кавычки.
Определить строку довольно просто — это некий набор символов. Представим, что у нас есть такие записи:
'Hello' 'Goodbye' 'G' ' ' ''
Какие из этих вариантов — строки? На самом деле, все пять вариантов подходят:
- С ‘Hello’ и ‘Goodbye’ все очевидно — мы уже работали с подобными конструкциями и называли их строками
- ‘G’ и ‘ ‘ — тоже строки, просто в них всего по одному символу
- » — это пустая строка, потому в ней ноль символов
Строкой мы считаем все, что находится внутри кавычек: даже если это пробел, один символ или вообще отсутствие символов.
Выше мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:
print("Dracarys!")
Теперь представьте, что вы хотите напечатать строчку Dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:
print('Dragon's mother') # SyntaxError: invalid syntax
Такая программа не будет работать. С точки зрения Python строчка началась с одинарной кавычки, а потом закончилась после слова dragon. Дальше были символы s mother без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ‘) . Этот код содержит синтаксическую ошибку — это видно даже по тому, как подсвечен код.
Чтобы избежать этой ошибки, мы используем двойные кавычки. Такой вариант программы сработает верно:
print("Dragon's mother")
Теперь интерпретатор знает, что строка началась с двойной кавычки и закончиться должна тоже на двойной кавычке. А одинарная кавычка внутри стала частью строки.
Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных. Причем количество кавычек внутри самой строки неважно.
Теперь представим, что мы хотим создать такую строку:
Dragon's mother said "No"
В ней есть и одинарные, и двойные кавычки. Нам нужно каким-то образом указать интерпретатору, что кавычки — это один из символов внутри строки, а не начало или конец строки.
Для этого используют символ экранирования: \ — обратный слэш. Если мы поставим \ перед кавычкой (одинарной или двойной), то интерпретатор распознает кавычку как обычный символ внутри строки, а не начало или конец строки:
# Экранируем кавычки вокруг No, чтобы интерпретатор # распознал их как часть строки print("Dragon's mother said \"No\"") # => Dragon's mother said "No"
Обратите внимание, что в примере выше нам не пришлось экранировать одинарную кавычку (апостроф ‘s), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.
Если нужно вывести сам обратный слеш, то работает такое же правило. Как и любой другой специальный символ, его надо экранировать:
print("\\") # => \
Задание
Напишите программу, которая выведет на экран:
"Khal Drogo's favorite word is "athjahakar""
Программа должна вывести на экран эту фразу в точности. Обратите внимание на кавычки в начале и в конце фразы:
"Khal Drogo's favorite word is "athjahakar""
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Форматирование текста в Python 3
Строки часто состоят из обычного текста, следовательно, есть много ситуаций, в которых разработчику необходимо иметь возможность изменить внешний вид строки, сделать её более читабельной.
Данное руководство рассматривает несколько способов форматирования строк Python.
Строковые литералы
В чём разница между строковым литералом и значением строки? Строковый литерал – это то, что вы видите в коде программы, включая кавычки. Значение строки – это то, что появляется на экране при вызове функции print() или запуске программы.
К примеру, в программе Hello, World!:
- Литерал – “Hello, World!”;
- Значение – Hello, World!
Значение строки появляется в окне терминала при запуске программы Python.
Однако бывают случаи, когда значение строки должно содержать кавычки. При этом нужно форматировать литерал.
Кавычки и апострофы
В Python строку можно заключать как одиночные, так и в двойные кавычки. Потому значение строки взять в кавычки очень просто: можно просто поместить значение в двойные кавычки, а саму строку – взять в одиночные кавычки. Например:
‘8host says, «Hello!»‘
Чтобы использовать в тексте апостроф, возьмите строку в двойные кавычки:
«Jenny’s dress is red.»
Как видите, вставить апостроф или взять цитату в кавычки очень просто: достаточно научиться комбинировать двойные и одиночные кавычки.
Разбиение строки
Вы можете разбить строку на несколько строк, чтобы сделать текст более удобным для чтения. Это позволяет группировать строки в простой для восприятия, упорядоченный текст. К примеру, так вы можете правильно отобразить стих или текст песни.
Для этого используйте тройные одиночные (”’) или тройные двойные кавычки (“””):
»’
This string is on
multiple lines
within three single
quotes on either side.
»’
«»»
This string is on
multiple lines
within three double
quotes on either side.
«»»
Управляющие последовательности
Ещё один способ отредактировать строку – использовать управляющие последовательности.
Все они начинаются с обратного слеша (\), после чего идёт специальный символ.
| Последовательность | Функция |
| \ | Символ новой строки |
| \\ | Обратный слеш (\) |
| \’ | Апостроф или одинарная кавычка |
| \” | Двойные кавычки |
| \n | Разрыв строки |
| \t | Горизонтальный отступ |
Попробуйте использовать управляющую последовательность, чтобы добавить кавычки в строку:
print(«8host says, \»Hello!\»»)
8host says, «Hello!»
Управляющая последовательность \” взяла строку Hello! в двойные кавычки.
Аналогично, вы можете использовать последовательность \’, чтобы добавить апостроф:
print(‘Jenny\’s dress is red.’)
Jenny’s dress is red.
Используя управляющую последовательность, вы можете взять строку в одинарные кавычки, даже если в ней нужен апостроф.
При использовании тройных кавычек вы можете заметить, что в верхней и нижней части при выводе строки остаётся свободное пространство. Чтобы удалить эти пробелы, воспользуйтесь последовательностью \ бежать в верхней и нижней части строки.
«»»\
This multi-line string
has no space at the
top or the bottom
when it prints.\
«»»
Также можно разделить строку на несколько строк с помощью последовательности \n:
print(«This string\nspans multiple\nlines.»)
This string
spans multiple
lines.
Управляющие последовательности можно комбинировать. Попробуйте вывести несколько строк и добавить табуляцию.
print(«1.\tShark\n2.\tShrimp\n10.\tSquid»)
1. Shark
2. Shrimp
3. Squid
Горизонтальный отступ обеспечивает выравнивание внутри второго столбца, благодаря чему текст становится читабельным.
Управляющие последовательности позволяют форматировать строки, которые невозможно или очень сложно отформатировать простым чередованием кавычек. К примеру, как без помощи последовательностей отформатировать строку:
July says, «Is Jenny’s dress red?»
Как отключить управляющие последовательности
Бывают ситуации, когда строка должна отображать символ, входящий в управляющую последовательность: например, в строке должен быть обратный слеш.
Чтобы Python читал строку буквально, не выполняя управляющих последовательностей, используется оператор r (raw string). Чтобы создать «неформатированную» строку, нужно просто добавить r перед кавычками:
print(r» July says,\»Is Jenny’\s dress red?\»»)
July says,\»Is Jenny’\s dress red?\»
Заключение
Теперь вы знакомы с основными методами форматирования строк в Python 3. Это позволит вам сделать строки, отображаемые программой, удобными и простыми для восприятия пользователей.
Одинарные и двойные кавычки в Python
Существует общий вопрос, который часто возникает при изучении языка программирования Python: есть ли разница между одинарными и двойными кавычками при определении строк? Для примера возьмем следующие две строки:
str1 = 'Hello, World!' str2 = "Hello, World!"
В соответствии с официальной документацией Python, между одинарными и двойными кавычками нет никакой разницы. Оба вида кавычек выполняют одну и ту же функцию — они определяют строковые литералы. Это означает, что ‘Hello, World!’ и «Hello, World!» являются одним и тем же.
Однако, несмотря на то, что они взаимозаменяемы, могут возникнуть ситуации, в которых удобнее использовать один тип кавычек над другим. Например, когда строка содержит кавычки или апостроф. Сравните два следующих примера:
quote1 = "He said, 'Hello, World!'" quote2 = 'He said, "Hello, World!"'
В первом примере использование двойных кавычек позволяет включить одинарные кавычки внутри строки без необходимости их экранирования. Во втором примере ситуация обратная — одинарные кавычки используются для определения строки, в которой содержатся двойные кавычки.
В конечном итоге выбор между одинарными и двойными кавычками в Python в большей степени сводится к стилистическим предпочтениям. Некоторые разработчики предпочитают использовать одинарные кавычки для определения строк, поскольку это требует меньше усилий для нажатия клавиш, другие же предпочитают двойные кавычки. При этом важно придерживаться одного стиля во всем проекте для обеспечения его согласованности.