2014-06-06 38 views

回答

42

您所看到的是表示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

+2

我試着讓這個答案專注於「雙反斜槓」的誤解,但它對了解[原始字符串文字](http://stackoverflow.com/questions/2081640)也很有用。 –

相關問題