Warum verursacht der einzelne Backslash Raw-String in Python einen Syntaxfehler?

Siehe auch das Warum kann ich eine rohe Zeichenfolge nicht mit einem Backslash beenden? und Warum können Pythons unformatierte String-Literale nicht mit einem Backslash enden? Fragen und verwandte Antworten.

In meinem Python 2-Programm verwende ich viele wörtliche Zeichenfolgen mit eingebetteten Backslashes. Ich könnte einen anderen Backslash verwenden, um jeden dieser Backslashes zu umgehen (zB:"red\\blue") oder verwenden Sie Python Raw Strings (zB:r"red\blue"). Ich habe die Raw-String-Methode standardisiert, die bis auf eine in allen Fällen gut funktioniert.

Wenn ich einen doppelten Backslash darstellen möchte, kann ich @ verwendr"\\", aber wenn ich versuche, ein einzelnes Backslash-Literal einzugebenr"\" Python beklagt sich mit einem Syntaxfehler. Die offensichtliche Problemumgehung besteht darin, @ zu verwende"\\" in diesem Fall, aberWarum ist der Backslash eines einzelnen Rohstrings ein Fehler? Ist das ein Fehler in Python? Gibt es eine Möglichkeit, einen einzelnen Backslash als rohen String zu codieren?

Beispiel

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

Ich würde es vorziehen, im gesamten Programm unformatierte Zeichenfolgen zu verwenden und dieses @ zu verwende"\\" scheint an mehreren Stellen wie ein Kludge. @ Verwendr"\\"[0] ist nicht besser. Ich habe auch darüber nachgedacht, eine Konstante @ zu verwendeBACKSLASH woBACKSLASH = r"\\"[0] beim Programmstart. Ein weiterer Kludge.

AKTUALISIEREN Dieser Fehler tritt auch auf, wenn am Ende eines Rohstrings eine ungerade Anzahl von Backslashes steht. Der verwendete Standard-String-Scanner interpretiert den Backslash als Escape-Zeichen, sodass der letzte Backslash vor dem endenden Anführungszeichen steht. Es war vorgesehen, dass" und' kann in die Zeichenfolge eingebettet werden, die resultierende Zeichenfolge enthält jedoch weiterhin die umgekehrten Schrägstriche als einfaches Zeichen.

Es gibt verschiedene Fragen zu diesem Problem, aber keine der Antworten erklärtWaru der einzelne Backslash Raw-String ist ein Fehler oderWi, um einen einzelnen Backslash als unformatierten String zu codieren:

python ersetzt einfachen Backslash durch doppelten Backslash

kann in Python nicht '\' (einfacher Backslash) ausgeben

Python-Regex, um doppelten Backslash durch einfachen Backslash zu ersetzen

Doppelter Backslash zu einfachem Backslash in Python 3 konvertieren

Warum kann ich eine rohe Zeichenfolge nicht mit einem Backslash beenden?

Warum können Pythons unformatierte String-Literale nicht mit einem Backslash enden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage