Por que a única string bruta de barra invertida no Python causa um erro de sintaxe?

Veja também oPor que não consigo terminar uma sequência bruta com uma barra invertida? ePor que os literais de strings brutos do Python não podem terminar com uma única barra invertida? perguntas e respostas relacionadas.

No meu programa Python 2 eu uso muitas strings literais com barras invertidas incorporadas. Eu poderia usar outra barra invertida para escapar de cada uma dessas barras invertidas (por exemplo:"red\\blue") ou use cadeias brutas de Python (por exemplo:r"red\blue") Padronizei o método de cadeia bruta, que funciona bem em todos os casos, exceto um.

Se eu quiser representar uma barra invertida dupla, posso usarr"\\", mas se eu tentar inserir um único literal de barra invertidar"\" Python reclama com um erro de sintaxe. A solução óbvia é usar"\\" neste caso, maspor que a única barra invertida de cadeia bruta é um erro? Isso é um bug no Python? Existe uma maneira de codificar uma única barra invertida como uma sequência bruta?

Exemplo:

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

Eu preferiria ser consistente usando cadeias brutas ao longo de todo o programa e usando esse"\\" em vários lugares parece um desdém. Usandor"\\"[0] não é melhor. Eu também considerei usar uma constanteBACKSLASH OndeBACKSLASH = r"\\"[0] no início do programa. Outro kludge.

ATUALIZAR: Este erro também ocorre quando há um número ímpar de barras invertidas no final de uma sequência não processada. O scanner de seqüência de caracteres padrão usado interpreta a barra invertida como um caractere de escape, para que a última barra invertida escape do caractere de aspas final. Pretendia-se que" e' pode ser incorporado na sequência, no entanto, a sequência resultante ainda terá as barras invertidas dentro como um caractere simples.

Existem várias perguntas relacionadas a esse problema, mas nenhuma das respostas explicaporque a sequência bruta de barra invertida única é um erro ouquão para codificar uma única barra invertida como uma sequência bruta:

python substituir barra invertida única por barra invertida dupla

não é possível imprimir '\' (barra invertida única) em Python

Regex Python para substituir barra invertida dupla por barra invertida única

Convertendo barra invertida dupla em barra invertida única em Python 3

Por que não consigo terminar uma sequência bruta com uma barra invertida?

Por que os literais de strings brutos do Python não podem terminar com uma única barra invertida?

questionAnswers(1)

yourAnswerToTheQuestion