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)也很有用。 –