我觉得这个有点棘手。
如果我有:
a = "fwd"
b = "\fwd"
如何忽略"\"
之类的内容,如
print(a in b)
可以评估为True?
答案 0 :(得分:11)
fwd
中没有b
。您有wd
,前面有ASCII codepoint 0C, the FORM FEED character。这是Python在常规字符串文字中使用\f
转义序列时所放置的值。
如果要包含反斜杠或使用原始字符串文字,请加倍反斜杠:
b = '\\fwd'
b = r'\fwd'
现在a in b
有效:
>>> 'fwd' in '\\fwd'
True
>>> 'fwd' in r'\fwd'
True
请参阅String literals documentation:
除非存在
'r'
或'R'
前缀,否则字符串中的转义序列将根据与标准C使用的规则类似的规则进行解释。已识别的转义序列为:[...]
\f
ASCII Formfeed(FF)
答案 1 :(得分:7)
使用原始字符串执行此操作的一种方法:
>>> a = "fwd"
>>> b = "\fwd"
>>> a in b
False
>>> a = r"fwd"
>>> b = r"\fwd"
>>> a in b
True
相关的docs
答案 2 :(得分:1)
你需要"逃避"反斜杠,如:
b = '\\fwd'
否则,它将单个反斜杠+ f读作ASCII字符(换页)。
以下是一个例子。
>>> a='fwd'
>>> b='\fwd'
>>> c='\\fwd'
>>> a in b
False
>>> a in c
True