Ponieważ \
rozpoczynaj sekwencje specjalne tylko wtedy, gdy są poprawnymi sekwencjami ucieczki.
>>> '\n'
'\n'
>>> r'\n'
'\\n'
>>> print '\n'
>>> print r'\n'
\n
>>> '\s'
'\\s'
>>> r'\s'
'\\s'
>>> print '\s'
\s
>>> print r'\s'
\s
O ile nie ma przedrostka „r” lub „R”, sekwencje specjalne w łańcuchach są interpretowane zgodnie z regułami podobnymi do reguł stosowanych w standardzie C. Rozpoznawane sekwencje specjalne to:
Escape Sequence Meaning Notes
\newline Ignored
\\ Backslash (\)
\' Single quote (')
\" Double quote (")
\a ASCII Bell (BEL)
\b ASCII Backspace (BS)
\f ASCII Formfeed (FF)
\n ASCII Linefeed (LF)
\N{name} Character named name in the Unicode database (Unicode only)
\r ASCII Carriage Return (CR)
\t ASCII Horizontal Tab (TAB)
\uxxxx Character with 16-bit hex value xxxx (Unicode only)
\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo
\xhh Character with hex value hh
Nigdy nie polegaj na surowych ciągach dla literałów ścieżki, ponieważ surowe ciągi mają pewne dość osobliwe wewnętrzne mechanizmy, o których wiadomo, że ugryzły ludzi w tyłek:
Gdy obecny jest przedrostek „r” lub „R”, znak następujący po ukośniku odwrotnym jest zawarty w ciągu bez zmiany, a wszystkie ukośniki odwrotne pozostają w ciągu. Na przykład, literał ciągu r"\n"
składa się z dwóch znaków: ukośnika odwrotnego i małej litery „n”. Cudzysłowy łańcuchowe mogą być poprzedzone ukośnikiem odwrotnym, ale ukośnik odwrotny pozostaje w ciągu; na przykład r"\""
jest prawidłowym literałem ciągu składającym się z dwóch znaków: ukośnika odwrotnego i cudzysłowu; r"\"
nie jest prawidłowym literałem ciągu (nawet nieprzetworzony ciąg nie może kończyć się nieparzystą liczbą odwrotnych ukośników). Konkretnie, nieprzetworzony ciąg nie może kończyć się pojedynczym ukośnikiem odwrotnym (ponieważ ukośnik odwrotny mógłby uciec od następującego cudzysłowu). Zauważ również, że pojedynczy lewy ukośnik, po którym następuje nowa linia, jest interpretowany jako te dwa znaki jako część ciągu,
Aby lepiej zilustrować ten ostatni punkt:
>>> r'\'
SyntaxError: EOL while scanning string literal
>>> r'\''
"\\'"
>>> '\'
SyntaxError: EOL while scanning string literal
>>> '\''
"'"
>>>
>>> r'\\'
'\\\\'
>>> '\\'
'\\'
>>> print r'\\'
\\
>>> print r'\'
SyntaxError: EOL while scanning string literal
>>> print '\\'
\
'\s'
(liker'\s'
) jest również reprezentowany jako'\\s'
, ponieważ'\s'
nie jest rozpoznawaną sekwencją ucieczki.