Весь заблуждение о необработанных строках python заключается в том, что большинство людей думают, что обратный слеш (внутри необработанной строки) является обычным символом, как и все остальные. Это не. Ключ к пониманию - последовательность обучения этого питона:
Когда присутствует префикс ' r ' или ' R ', символ, следующий за
обратная косая черта включена в строку без изменений, и все
обратные слеши остаются в строке
Таким образом, любой символ после обратной косой черты является частью необработанной строки. Когда синтаксический анализатор вводит необработанную строку (отличную от юникода) и встречает обратную косую черту, он знает, что есть 2 символа (обратная косая черта и символ после нее).
Таким образом:
r'abc \ d ' включает a, b, c, \, d
r'abc \ 'd' включает a, b, c, \, ', d
r'abc \ '' содержит a, b, c, \, '
и
r'abc \ ' содержит a, b, c, \,' , но нет завершающей кавычки.
Последний случай показывает, что согласно документации теперь парсер не может найти закрывающую кавычку, так как последняя цитата, которую вы видите выше, является частью строки, т.е. обратная косая черта здесь не может быть последней, поскольку она будет «пожирать» закрывающий символ строки.