2012-07-04 10 views
6

Non riesco a vedere una differenza significativa tra le due righe seguenti.Bug di Python - o mia stupidità - EOL durante la scansione di stringhe letterali

Tuttavia, le prime analisi e il secondo no.

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 

Si tratta di un pitone bug/funzione/stranezza, o sono io manca qualcosa di fondamentale?

+1

Basta usare ' '' '' invece di ' """ ' –

+0

' \\ 'non sfuggirà alle virgolette, perché è una barra rovesciata sfuggita. – katrielalex

risposta

9

Le ultime quattro contrassegni di citazione in

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

vengono analizzati come """, vale a dire fine della stringa, seguita da ", cioè inizio di una nuova stringa letterale. Questo nuovo letterale non è mai completato, però. Esempio semplice:

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

Se si vuole evitare questo problema, quindi sostituire """ con r' o sfuggire alla ":

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

r 'buona soluzione –

0

Le ultime 4 virgolette sono valutate come "" & "" invece di quello che si prevede di valutare come " & """.

+2

In realtà, viene analizzata come' "" "", quindi '". –