2012-07-04 10 views
6

No puedo ver una diferencia significativa entre las dos líneas siguientes.Error de Python - o mi estupidez - EOL mientras escaneo literal de cadena

Sin embargo, el primer análisis, y el último, 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 

¿Esto es un error de Python/función/rareza, o me falta algo fundamental?

+1

sólo tiene que utilizar ' ''' 'en lugar de ' """' –

+0

' \\ 'no escapará a las comillas, porque es una barra invertida escapada. – katrielalex

Respuesta

9

Los últimos cuatro comillas en

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

son interpretados como """, es decir, final de la cadena, seguido de ", es decir, inicio de una nueva cadena literal. Sin embargo, este nuevo literal nunca se completa. Un simple ejemplo:

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

Si se quiere evitar este problema, vuelva a colocar """ con r' o escapar de la ":

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

r 'buena solución –

0

Las 4 últimas comillas se evalúan como "" & "" en lugar de lo que espera que se evalúe como " & """.

+2

En realidad, se analiza como' "" "', luego '" '. –

Cuestiones relacionadas