如果我有:
a = "fwd"
b = "\fwd"
我该如何忽略 "\"
,使得它变成这样
print(a in b)
能够评估为True吗?
在 b
中没有 fwd
。你有的是 wd
,它前面是ASCII码点0C,即表单换页符 (FORM FEED character)。当您在普通字符串字面值中使用 \f
转义序列时,这就是Python放置在那里的值。
如果要包括反斜杠,请将其加倍,或使用原始字符串字面值:
b = '\\fwd'
b = r'\fwd'
现在a in b
可以使用了:
>>> 'fwd' in '\\fwd'
True
>>> 'fwd' in r'\fwd'
True
除非字符串带有前缀
'r'
或'R'
,否则字符串中的转义字符将按照类似于标准C的规则进行解释。识别的转义序列包括:[...]
\f
ASCII换页符(FF)
使用原始字符串的一种方法:
>>> a = "fwd"
>>> b = "\fwd"
>>> a in b
False
>>> a = r"fwd"
>>> b = r"\fwd"
>>> a in b
True
相关的文档
您需要“转义”反斜杠,例如:
b = '\\fwd'
>>> a='fwd'
>>> b='\fwd'
>>> c='\\fwd'
>>> a in b
False
>>> a in c
True
您想要在字符串左侧写一个字母r
,如下所示...
str0 = r"\fwd"
r"\n"
中,是一个反斜杠后跟一个字母n
。
r"\n"
并不包含换行符。
str1 = r"\n"
\ |
n |
---|---|
92 | 110 |
str1 = r"\n"
\ |
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)
b
中没有反斜杠字符。有一个换页符在b
中,是由转义序列\f
放置的。 - Martijn Pieters\
?我不确定你的意思。或者你是想添加一个反斜杠吗?那么就将其加倍(以转义它)或使用原始字符串字面量。例如,b = '\\fwd'
或b = r'\fwd'
。 - Martijn Pieters