忽略 python 中的反斜杠字符

问题描述 投票:0回答:4

如果我有:

a = "fwd"
b = "\fwd"

我怎么能忽略

"\"
所以像

print(a in b)

可以评估为真吗?

python escaping backslash
4个回答
24
投票

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'
'R'
前缀,否则字符串中的转义序列将根据类似于标准 C 使用的规则进行解释。可识别的转义序列是:

[...]

\f
ASCII 换页 (FF)


14
投票

一种使用原始字符串的方法:

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

相关docs


1
投票

您需要“转义”反斜杠,如:

b = '\\fwd'

否则,它将单个反斜杠 + f 读取为 ASCII 字符(换页)。

这是一个例子。

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

0
投票

您想在字符串的左侧写一个字母

r
,如...

str0 = r"\fwd"

raw字符串中,字符按字面意思处理。

例如,在

r"\n"
中是一个黑色斜杠后跟一个字母
n

r"\n"
not 包含换行符。


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)
© www.soinside.com 2019 - 2024. All rights reserved.