Ich bin hier verwirrt, obwohl rohe Zeichenketten jedes \
in \
konvertieren, aber wenn dieses \
am Ende erscheint, wird der Fehler ausgelöst.
Aktualisierung:
Dies wird nun auch in Python-FAQs behandelt: Warum können nicht rohe Strings (R-Strings) enden? ein Backslash?
Sie benötigen weiterhin \
, um in rohen Zeichenketten '
oder "
zu erhalten, da sonst der Python-Interpreter nicht weiß, wo die Zeichenkette stoppt. In Ihrem Beispiel wird die schließende '
entfernt.
Sonst:
%Vor%Sehen Sie sich die Syntax-Hervorhebung an, um zu sehen, was ich meine.
Raw-Zeichenfolgen können aufgrund der Funktionsweise des Parsers nicht in einfachen umgekehrten Schrägstrichen enden (es findet jedoch kein tatsächliches Escaping statt). Die Problemumgehung besteht darin, den umgekehrten Schrägstrich danach als ein nicht-raw-Zeichenfolgenliteral hinzuzufügen:
%Vor%Nicht schön, aber es funktioniert. Sie können Plus hinzufügen, um das Geschehen klarer zu machen, aber es ist nicht notwendig:
%Vor%Python-Strings werden in zwei Schritten verarbeitet:
Zuerst sucht der Tokenizer nach dem Schlusskurs. Es erkennt Backslashes, wenn es dies tut, aber interpretiert sie nicht - es sucht nur nach einer Folge von String-Elementen gefolgt von der schließenden Anführungszeichen, wobei "String-Elemente" entweder (ein Zeichen, das kein Backslash ist, schließendes Zitat oder a Newline - außer Newlines sind in Triple-Anführungszeichen zulässig, oder (ein Backslash, gefolgt von einem einzelnen Zeichen).
Dann wird der Inhalt der Zeichenfolge interpretiert (Backslash-Escape-Zeichen werden verarbeitet), je nachdem, um welche Art von Zeichenfolge es sich handelt. Das Zeichen r
vor einem Zeichenfolgenliteral wirkt sich nur auf diesen Schritt aus.
Zitat aus Ссылка :
Sogar in einem rohen Literal können Anführungszeichen mit einem Backslash versehen werden, aber der Backslash bleibt im Ergebnis; Zum Beispiel ist r "\" "eine gültige Zeichenfolge Literal bestehend aus zwei Zeichen: ein umgekehrter Schrägstrich und ein Anführungszeichen; r "\" ist kein gültiges Zeichenfolgeliteral (selbst eine rohe Zeichenfolge kann nicht in einem enden ungerade Anzahl von Backslashes). Insbesondere kann ein rohes Literal nicht enden ein einzelner umgekehrter Schrägstrich (da der umgekehrte Schrägstrich dem folgenden entgeht Zitat Zeichen). Beachten Sie auch, dass ein einzelner umgekehrter Schrägstrich gefolgt von a Newline wird als diese zwei Zeichen als Teil des Literals interpretiert, nicht als Zeilenfortsetzung.
In der rohen Zeichenkette werden Backslash nicht speziell behandelt, außer , wenn "
oder '
vorangestellt ist. Daher ist r'\'
oder r"\"
keine gültige Zeichenfolge, weil das rechte Anführungszeichen maskiert ist, wodurch das Zeichenfolgenliteral ungültig wird. In diesem Fall besteht kein Unterschied, ob r
existiert, d. H.% Co_de% entspricht r'\'
und '\'
entspricht r"\"
.