2017-05-03 8 views
3

Also versuche ich diesen Befehl if r"\" in text: auszuführen und es funktioniert nicht. Es denkt, dass die ganze Linie eine Schnur ist. Wie behebe ich das? dieseWie zu testen, ob Symbol (Backslash) in einer Zeichenfolge ist?

+4

'if r" \\ "in Text' –

+0

Sonderzeichen müssen entfernt werden. – GhostCat

+2

Wenn Sie das nächste Mal eine Frage stellen, stellen Sie sicher, dass Sie angeben, welche Art von Fehler Sie erhalten und dass Sie den Mindestcode angeben, um den Fehler zu reproduzieren. Siehe https://stackoverflow.com/help/how-to-ask und https://stackoverflow.com/help/mcve – Antonio

Antwort

6

Raw Literale sind nicht vollständig roh. Der entsprechende Absatz der Dokumentation ist am unteren Ende der https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals, kurz vor dem nächsten Abschnitt („Stringliteral Verkettung“) beginnt:

Selbst in einem rohen wörtlichen können Anführungszeichen mit einem Backslash geschützt werden, aber der umgekehrten Schrägstrich bleibt im Ergebnis; Beispielsweise ist r"\"" ein gültiges Zeichenfolgenliteral, das aus zwei Zeichen besteht: einem umgekehrten Schrägstrich und einem doppelten Anführungszeichen; r"\" ist kein gültiges Zeichenfolgenliteral (selbst eine rohe Zeichenfolge kann nicht mit einer ungeraden Anzahl von umgekehrten Schrägstrichen enden). Insbesondere ein rohes Literal kann nicht in einem einzelnen umgekehrten Schrägstrich enden (da der umgekehrte Schrägstrich das folgende Anführungszeichen entkommt). Beachten Sie auch, dass ein einzelner umgekehrter Schrägstrich, gefolgt von einem Zeilenumbruch, als diese beiden Zeichen als Teil des Literals und nicht als Zeilenfortsetzung interpretiert wird.

(Hervorhebung im Original.)

So können Sie r"\\" schreiben und einen String mit zwei Schrägstrichen, und Sie können r"\"" schreiben und einen String mit einem umgekehrten Schrägstrich und einem doppelten Anführungszeichen erhalten , aber wenn Sie eine Zeichenfolge mit nur einen Backslash möchten, können Sie es nicht mit einem rohen Literal tun. Sie müssen stattdessen "\\" schreiben.

3

Verwendung:

"\\" 

Das heißt, ein entflohener Backslash, anstatt ein entflohener Zitat.

3

Sie kämpfen mit den entkommenen Charakteren.

Da \ ist ein Entkommen Zeichen, das Sie es zu entkommen bedeuten „dieses Zeichen“ und nicht „was Folgenden wird entwertet werden“.

if '\\' in 'foo\\': 
2
if "\\" in text 

Dies sollte funktionieren, Sie müssen es einfach nur zu entkommen

Verwandte Themen