2012-07-04 48 views
6

我看不到以下兩行之間的顯着差異。Python錯誤 - 或者我的愚蠢 - 當掃描字符串文字時EOL

然而,第一個解析,而後者,並沒有。

In [5]: n=""" \\"Axis of Awesome\\" """ 

In [6]: n="""\\"Axis of Awesome\\"""" 
    File "<ipython-input-6-d691e511a27b>", line 1 
    n="""\\"Axis of Awesome\\"""" 
           ^
SyntaxError: EOL while scanning string literal 

這是一個Python的bug /功能/古怪,或者我錯過了一些基本的東西?

+1

只要使用' '''的',而不是' 「」「' –

+0

' \\'不會脫離引號,因爲它是一個反斜槓。 – katrielalex

回答

9

最後四個引號被解析爲""",即字符串的結束,其次是",即一個新的字符串字面的開始。雖然這個新的文字從來沒有完成。簡單的例子:

>>> """foo""""bar" 
'foobar' 
>>> """foo""" "bar" 
'foobar' 

如果你想避免這個問題,然後更換"""r'或逃避"

>>> """\\"Axis of Awesome\\\"""" 
'\\"Axis of Awesome\\"' 
>>> r'\"Axis of Awesome\"' 
'\\"Axis of Awesome\\"' 
+0

r'很好的解決方法 –

0

您最後4個引號的評估結果爲"" & "",而不是您期望的評估結果爲" & """。在

"""\\"Axis of Awesome\\"""" 

+2

實際上,它被解析爲''「」'',然後''' –