2016-04-14 15 views
2

Dieser ist ein bisschen schwierig, denke ich.Ignorieren Backslash-Zeichen in Python

wenn ich:

a = "fwd" 
b = "\fwd" 

wie kann ich ignorieren die "\" so etwas wie

print(a in b) 

kann auf True bewerten?

+0

Was tun Du meinst mit "Ignorieren"? – TigerhawkT3

+0

@ TigerhawkT3 also b kann einfach "fwd" sein –

+2

Es gibt keinen Backslash-Charakter in 'b'. Es gibt ein * -Form-Zeichen * in "b", das dort durch die Escape-Sequenz "\ f" gesetzt wird. –

Antwort

9

Sie haben noch fwd in b. Sie haben wd, vorausgegangen ist ASCII codepoint 0C, the FORM FEED character. Das ist der Wert, den Python angibt, wenn Sie in einem regulären String-Literal eine Escape-Sequenz verwenden.

Doppelte Backslash, wenn Sie eine rohe Stringliteral einen umgekehrten Schrägstrich oder verwenden Sie aufnehmen möchten:

b = '\\fwd' 
b = r'\fwd' 

Jetzt a in b Werke:

>>> 'fwd' in '\\fwd' 
True 
>>> 'fwd' in r'\fwd' 
True 

Siehe String literals documentation:

Es sei denn, ein 'r' oder 'R' Präfix ist vorhanden, Escape-Sequenz s in Strings werden nach Regeln ähnlich denen von Standard-C Die erkannten Escape-Sequenzen sind verwendet interpretiert:

[...]

\f ASCII Seitenvorschub (FF)

5

Eine Möglichkeit, es mit rohen Saiten tun:

>>> a = "fwd" 
>>> b = "\fwd" 
>>> a in b 
False 
>>> a = r"fwd" 
>>> b = r"\fwd" 
>>> a in b 
True 

Der relevante docs

1

Sie müssen "Escape" den umgekehrten Schrägstrich, wie in:

b = '\\fwd' 

Ansonsten liest der einzelne Backslash + f als ASCII-Zeichen (ein Formfeed).

Hier ist ein Beispiel.

>>> a='fwd' 
>>> b='\fwd' 
>>> c='\\fwd' 
>>> a in b 
False 
>>> a in c 
True 
Verwandte Themen