Całe błędne przekonanie na temat nieprzetworzonych ciągów znaków w Pythonie jest takie, że większość ludzi uważa, że ukośnik odwrotny (w ciągu nieprzetworzonym) jest zwykłym znakiem, jak wszystkie inne. Nie jest. Kluczem do zrozumienia jest sekwencja samouczków w języku Python:
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
Tak więc każdy znak następujący po odwrotnym ukośniku jest częścią nieprzetworzonego ciągu. Gdy parser wpisze nieprzetworzony ciąg (inny niż Unicode) i napotka ukośnik odwrotny, wie, że są 2 znaki (ukośnik odwrotny i znak po nim).
Tą drogą:
r'abc \ d ' obejmuje a, b, c, \, d
r'abc \ 'd' obejmuje a, b, c, \, ', d
r'abc \ '' obejmuje a, b, c, \, '
i:
r'abc \ ' zawiera a, b, c, \,' ale nie ma teraz kończącego cudzysłowu.
Ostatni przypadek pokazuje, że zgodnie z dokumentacją parser nie może teraz znaleźć cudzysłowu zamykającego, ponieważ ostatni cytat, który widzisz powyżej, jest częścią ciągu, tj. Ukośnik odwrotny nie może być tutaj ostatni, ponieważ pochłonie znak zamykający łańcuch.