为什么反斜杠出现两次?

当我创建一个包含反斜杠的字符串时,它们会被重复:

>>> my_string = "why\does\it\happen?" >>> my_string 'why\\does\\it\\happen?' 

为什么?

你看到的是由__repr__()方法创建的my_string表示形式 。 如果你打印它,你可以看到你实际上有单反斜杠,就像你想的那样:

 >>> print(my_string) why\does\it\happen? 

您可以使用repr()内置函数获取字符串(或任何其他对象)的标准表示形式:

 >>> print(repr(my_string)) 'why\\does\\it\\happen?' 

Python将字符串中的反斜杠表示为\\因为反斜杠是转义字符 – 例如, \n表示换行符,而\t表示一个制表符。

这有时会让你陷入困境:

 >>> print("this\text\is\not\what\it\seems") this ext\is ot\what\it\seems 

因此,需要有一种方式来告诉Python你真的需要两个字符而不是一个换行符,而你通过转义反斜杠本身来实现另一个:

 >>> print("this\\text\is\what\you\\need") this\text\is\what\you\need 

当Python返回一个字符串的表示时,它可以安全地转义所有的反斜杠(即使它们不会成为转义序列的一部分),这就是你所看到的。 但是,字符串本身只包含单个反斜杠。

有关Python字符串文字的更多信息,请参阅Python文档中的字符串和字节文字 。