Сообщить об ошибке.

Распознаваемые escape последовательности в Python

Если префикс 'r' или 'R' не присутствует, то управляющие последовательности в строковых и байтовых литералах интерпретируются в соответствии с правилами, аналогичными тем, которые используются в стандарте C.

Распознаваемые управляющие escape-последовательности:

  • \<newline> - Обратная косая черта и новая строка игнорируются.

    В конце строки можно добавить обратную косую черту, чтобы игнорировать новую строку:

    >>> 'This string will not include \
    ... backslashes or newline characters.'
    # 'This string will not include backslashes or newline characters.'
    

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

  • \\ - Обратная косая черта (\).

  • \' - Одинарная кавычка (').

  • \" - Двойная кавычка (").

  • \a - ASCII Bell (BEL).

  • \b - ASCII Backspace (BS).

  • \f - ASCII Formfeed (FF).

  • \n - ASCII Linefeed (LF).

  • \r - Возврат каретки ASCII (CR).

  • \t - Горизонтальная вкладка ASCII (TAB).

  • \v - Вертикальная вкладка ASCII (VT).

  • \ooo - литерал с восьмеричным значением ooo:

    • Как и в стандарте языка C, допускается использование до трех восьмеричных цифр.

    • Изменено в Python 3.11: Восьмеричные экранирующие значения со значением больше 0o377 выдают DeprecationWarning.

    • Изменено в Python 3.12: Восьмеричные экранирующие значения со значением больше 0o377 выдают SyntaxWarning. В будущей версии Python они в конечном итоге станут SyntaxError.

    • В байтовом литерале шестнадцатеричные и восьмеричные экранирующие символы обозначают байт с заданным значением. В строковом литерале эти экранирующие символы обозначают символ Юникода с заданным значением.

  • \xhh - Символ с шестнадцатеричным значением hh:

    • В отличие от стандарта языка C, требуется ровно две шестнадцатеричные цифры.
    • В байтовом литерале шестнадцатеричные и восьмеричные экранирующие символы обозначают байт с заданным значением. В строковом литерале эти экранирующие символы обозначают символ Юникода с заданным значением.

Escape-последовательности, распознаваемые только в строках:

  • \N{name} - Имя персонажа в базе данных Unicode.

    • есть поддержка псевдонимов имен.
  • \uxxxx - Символ с 16-битным шестнадцатеричным значением xxxx.

    • Требуются ровно четыре шестнадцатеричные цифры.
  • \Uxxxxxxxx - Символ с 32-битным шестнадцатеричным значением xxxxxxxx.

    • Таким образом можно закодировать любой символ Юникода. Требуется ровно восемь шестнадцатеричных цифр.

В отличие от стандарта C, все нераспознанные escape-последовательности остаются в строке без изменений, т. е. в результате остается обратная косая черта. (Такое поведение полезно при отладке: если escape-последовательность введена с ошибкой, результирующий вывод легче распознать как поврежденный.) Также важно отметить, что управляющие последовательности, распознаваемые только в строковых литералах, попадают в категорию нераспознанных управляющих последовательностей для байтовых литералов.

Изменено в Python 3.12: Нераспознанные escape-последовательности выдают SyntaxWarning. В будущей версии Python они в конечном итоге станут SyntaxError.

Даже в необработанном литерале кавычки могут быть экранированы обратной косой чертой, но обратная косая черта остается в результате. Например, r"\"" является допустимым строковым литералом, состоящим из двух символов: обратной косой черты и двойной кавычки; r"\" не является допустимым строковым литералом (даже необработанная строка не может заканчиваться нечетным числом обратных косых черт). В частности, необработанный литерал не может заканчиваться одной обратной косой чертой (поскольку обратная косая черта экранировала бы следующий символ кавычки). Также обратите внимание, что одиночная обратная косая черта, за которой следует новая строка, интерпретируется как эти два символа как часть литерала, а не как продолжение строки.