30
当我创建一个包含反斜杠的字符串,他们得到复制:为什么反斜杠会出现两次?
>>> my_string = "why\does\it\happen?"
>>> my_string
'why\\does\\it\\happen?'
为什么?
当我创建一个包含反斜杠的字符串,他们得到复制:为什么反斜杠会出现两次?
>>> my_string = "why\does\it\happen?"
>>> my_string
'why\\does\\it\\happen?'
为什么?
您所看到的是表示的my_string
由其__repr__()
方法创建。如果你打印,你可以看到你实际上得到一个反斜杠,就像你想要的结果:
>>> 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你真的希望两个字符\n
而不是换行,你这样做通过转义反斜杠本身,用另一条:
>>> print("this\\text\is\what\you\\need")
this\text\is\what\you\need
当Python返回一个字符串的表示,它起着安全,逃避所有的反斜线(即使他们本来没有的部分ES海角序列),这就是你所看到的。但是,字符串本身只包含单个反斜杠。
有关Python字符串文字的更多信息,请参阅Python文档中的String and Bytes literals。
我试着让这个答案专注于“双反斜杠”的误解,但它对了解[原始字符串文字](http://stackoverflow.com/questions/2081640)也很有用。 –