为什么反斜杠出现两次?
当我创建一个包含反斜杠的字符串时,它们会被重复:
>>> 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文档中的字符串和字节文字 。