如果我有:
a = "fwd"
b = "\fwd"
我怎么能忽略
"\"
所以像
print(a in b)
可以评估为真吗?
fwd
中没有b
。您有 wd
,前面是 ASCII 代码点 0C,FORM FEED 字符。当您在常规字符串文字中使用 \f
转义序列时,这就是 Python 的值。
如果要包含反斜杠或使用原始字符串文字,请加倍反斜杠:
b = '\\fwd'
b = r'\fwd'
现在
a in b
作品:
>>> 'fwd' in '\\fwd'
True
>>> 'fwd' in r'\fwd'
True
参见字符串文字文档:
除非存在
或'r'
前缀,否则字符串中的转义序列将根据类似于标准 C 使用的规则进行解释。可识别的转义序列是:'R'
[...]
ASCII 换页 (FF)\f
一种使用原始字符串的方法:
>>> a = "fwd"
>>> b = "\fwd"
>>> a in b
False
>>> a = r"fwd"
>>> b = r"\fwd"
>>> a in b
True
相关docs
您需要“转义”反斜杠,如:
b = '\\fwd'
否则,它将单个反斜杠 + f 读取为 ASCII 字符(换页)。
这是一个例子。
>>> a='fwd'
>>> b='\fwd'
>>> c='\\fwd'
>>> a in b
False
>>> a in c
True
您想在字符串的左侧写一个字母
r
,如...
str0 = r"\fwd"
在raw字符串中,字符按字面意思处理。
例如,在
r"\n"
中是一个黑色斜杠后跟一个字母n
。
r"\n"
not 包含换行符。
str1 = r"\n"
|
|
---|---|
92 | 110 |
您可以通过使用ordinal函数
ord()
打印出基础数字来验证这一点。
'\\fwd' [92, 102, 119, 100]
'\\n' [92, 110]
'\n' [10]
'\\n' [92, 110]
自己测试一下:
str0 = r"\fwd"
str1 = r"\n"
str2 = "\n"
str3 = "\\n"
tstrs = [str0, str1, str2, str3]
width = max(len(repr(tstr)) for tstr in tstrs)
for tstr in tstrs:
numbers = list(ord(ch) for ch in tstr)
print(repr(tstr).ljust(4 + width), numbers)