在Python中,如何编写字符串String =“\ s”?

时间:2016-12-01 11:41:44

标签: python regex string escaping

为什么:

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"

3 个答案:

答案 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