在Python中忽略反斜杠字符

13

如果我有:

a = "fwd"
b = "\fwd"

我该如何忽略 "\",使得它变成这样

print(a in b)

能够评估为True吗?


“ignore”是什么意思? - TigerhawkT3
@TigerhawkT3 所以 b 可以直接是 "fwd"。 - Kevin R.
2
b 中没有反斜杠字符。有一个换页符b 中,是由转义序列 \f 放置的。 - Martijn Pieters
2
@KevinR:那么在字符串中不要使用\?我不确定你的意思。或者你是想添加一个反斜杠吗?那么就将其加倍(以转义它)或使用原始字符串字面量。例如,b = '\\fwd'b = r'\fwd' - Martijn Pieters
这应该是 https://dev59.com/I2445IYBdhLWcg3wydBk 的副本,但我今天的关闭投票已经用完了。 - Karl Knechtel
4个回答

26

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

请参阅String literals文档

除非字符串带有前缀'r''R',否则字符串中的转义字符将按照类似于标准C的规则进行解释。识别的转义序列包括:

[...]

\f ASCII换页符(FF)


15

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

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

相关的文档


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

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

b = '\\fwd'

否则,它会将单个反斜杠+f读取为ASCII字符(换页符)。
这是一个例子。
>>> a='fwd'
>>> b='\fwd'
>>> c='\\fwd'
>>> a in b
False
>>> a in c
True

-1

您想要在字符串左侧写一个字母r,如下所示...

str0 = r"\fwd"

原始字符串中,字符被视为字面量。
例如,在r"\n"中,是一个反斜杠后跟一个字母nr"\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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接