Весь заблуждение о необработанных строках python заключается в том, что большинство людей считают, что обратный слеш (внутри необработанной строки) является обычным символом, как и все остальные. Это не. Ключ к пониманию - последовательность обучения этого питона:
При наличии префикса ' r ' или ' R ' символ, следующий за обратной косой чертой, включается в строку без изменений, и все обратные косые черты остаются в строке
Таким образом, любой символ после обратной косой черты является частью необработанной строки. Когда синтаксический анализатор вводит необработанную строку (отличную от Unicode) и встречает обратную косую черту, он знает, что есть 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, \,' но завершающей кавычки сейчас нет.
Последний случай показывает, что в соответствии с документацией теперь парсер не может найти закрывающую кавычку, так как последняя кавычка, которую вы видите выше, является частью строки, то есть обратная косая черта здесь не может быть последней, поскольку она будет «пожирать» закрывающий символ строки.