¿Por qué la cadena sin procesar de barra diagonal inversa simple en Python causa un error de sintaxis?

Ver también el¿Por qué no puedo terminar una cadena sin formato con una barra diagonal inversa? y¿Por qué los literales de cadena sin procesar de Python no pueden terminar con una barra diagonal inversa simple? preguntas y respuestas relacionadas.

En mi programa Python 2, uso muchas cadenas literales con barras invertidas incrustadas. Podría usar otra barra invertida para escapar de cada una de estas barras invertidas (por ejemplo:"red\\blue") o use cadenas sin formato de Python (por ejemplo:r"red\blue") He estandarizado el método de cadena sin formato que funciona bien en todos los casos, excepto uno.

Si quiero representar una barra invertida doble, puedo usarr"\\", pero si intento ingresar un único literal de barra invertidar"\" Python se queja con un error de sintaxis. La solución obvia es usar"\\" en este caso, pero¿Por qué es un error la barra diagonal inversa de cadena sin formato? ¿Es esto un error en Python? ¿Hay alguna manera de codificar una barra diagonal inversa simple como una cadena sin formato?

Ejemplo:

>>> r"red\blue"
'red\\blue'
>>> r"\\"
'\\\\'
>>> r"\"
  File "<stdin>", line 1
    r"\"
       ^
SyntaxError: EOL while scanning string literal
>>> 

Prefiero ser coherente usando cadenas sin procesar en todo el programa, y usando esto"\\" en varios lugares parece un kludge. Utilizandor"\\"[0] No hay nada mejor. También he considerado usar una constanteBACKSLASH dóndeBACKSLASH = r"\\"[0] Al inicio del programa. Otro golpe.

ACTUALIZAR: Este error también ocurre cuando hay un número impar de barras invertidas al final de una cadena sin formato. El escáner de cadena predeterminado que se utiliza interpreta la barra invertida como un carácter de escape, de modo que la última barra invertida escapará del carácter de comilla final. Se pretendía que" y' puede incrustarse en la cadena, sin embargo, la cadena resultante seguirá teniendo las barras invertidas dentro como un carácter simple.

Hay varias preguntas relacionadas con este problema, pero ninguna de las respuestas explicapor qué la cadena sin procesar de barra diagonal inversa simple es un error ocómo para codificar una barra diagonal inversa simple como una cadena sin formato:

Python reemplaza una barra invertida simple con una barra invertida doble

no se puede imprimir '\' (barra invertida simple) en Python

Python regex para reemplazar la barra invertida doble con una barra invertida simple

Conversión de la barra diagonal inversa doble a la barra diagonal inversa simple en Python 3

¿Por qué no puedo terminar una cadena sin formato con una barra diagonal inversa?

¿Por qué los literales de cadena sin procesar de Python no pueden terminar con una barra diagonal inversa simple?

Respuestas a la pregunta(1)

Su respuesta a la pregunta