python3保留字符串变量中的反斜杠_为什么Python字符串中的3个反斜杠等于4?

这是因为如果组合表示有效的转义序列,则反斜杠将作为紧随其后的字符的转义字符。 这里列出了十几个转义序列。 它们包括明显的那些,例如换行'?\\\\?',水平标签?\\?,回车\?以及更加模糊的那些,例如使用?\\?的命名的unicode字符。 \N{WAVY DASH}表示unicode字符\u3030。但关键点是如果转义序列未知,则字符序列将保留在字符串中。

部分问题也可能是Python解释器输出误导了你。 这是因为反斜杠在显示时会被转义。 但是,如果您打印这些字符串,您将看到额外的反斜杠消失。

>>> '?\\\?'

'?\\\\?'

>>> print('?\\\?')

?\\?

>>> '?\\\?' == '?\\?' # I don't know why you think this is True???

False

>>> '?\\\?' == r'?\\?' # but if you use a raw string for '?\\?'

True

>>> '?\\\\?' == '?\\\?' # this is the same string... see below

True

对于您的具体示例,在第一种情况下'?\\\\?',第一个?\\?转义第二个反斜杠,留下一个反斜杠,但第三个反斜杠仍然是反斜杠,因为\?不是有效的转义序列。 因此,结果字符串是?\\?。

对于第二种情况'?\\\\?',第一个反斜杠转义第二个,第三个反斜杠转义第四个,导致字符串?\\?。

这就是为什么三个反斜杠与四个相同的原因:

>>> '?\\\?' == '?\\\\?'

True

如果要创建带有3个反斜杠的字符串,则可以转义每个反斜杠:

>>> '?\\\\\\?'

'?\\\\\\?'

>>> print('?\\\\\\?')

?\\\?

或者你可能会发现" raw" 字符串更容易理解:

>>> r'?\\\?'

'?\\\\\\?'

>>> print(r'?\\\?')

?\\\?

这转换为字符串文字的转义序列处理。 有关详细信息,请参阅字符串文字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值