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

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

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

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

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

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

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


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

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

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

>>> 'It's a bad example.'
  File "<stdin>", 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 "<stdin>", 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 "<stdin>", 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»