为什么:
B = "The" + "\s"
和
B = "The" + r"\s"
产率:
"The\\s"
是否可以编写上述内容,以便输出字符串为:
"The\s"
我已经阅读了关于反斜杠问题及其转义属性的类似问题,以及Python中正则表达式字符的解释。
How to print backslash with Python?
Why can't Python's raw string literals end with a single backslash?
这是否意味着没有办法写出我想要的东西?
如果它有用,我的最终目标是编写一个程序,将空格(\ s)的正则表达式添加到一个字符串,其中包含以下空格:
例如,从:
开始A = "The Cat and Dog"
应用该功能后,这将成为:
B = "The\sCat\sand\sDog"
答案 0 :(得分:2)
我认为这与另一个question
有关字符串的表示形式及其实际包含的内容可能不同。
观察:
>>> B = "The" + "\s"
>>> B
'The\\s'
>>> print B
The\s
此外
>>> A = "The Cat and Dog"
>>> B = str.replace(A, ' ', '\s')
>>> B
'The\\sCat\\sand\\sDog'
>>> print B
The\sCat\sand\sDog
答案 1 :(得分:2)
来自the docs:
所有未识别的转义序列都保留在字符串中不变,即反斜杠留在结果中
因此,虽然\s
不是一个正确的转义序列,但Python会原谅你的错误,并将反斜杠视为已正确转义为\\
。但是当您查看字符串的表示时,它会显示正确转义的反斜杠。也就是说,字符串只包含一个反斜杠。它只是将其显示为具有两个转义序列的表示。
答案 2 :(得分:1)
您必须逃避"\"
B = "The" + "\\s"
>>> B = "The" + "\\s"
>>> print(B)
The\s
参见Escape Sequences部分: Python 3 - Lexical Analysis