python: SyntaxError: EOL al escanear literal de cadena


Respuestas:


224

No está poniendo un "antes del final de la línea.

Úselo """si desea hacer esto:

""" a very long string ...... 
....that can span multiple lines
"""

17
Y con cuidado de usar solo tres comillas, tuve cuatro por accidente y apareció el error
Orégano

1
¿Qué pasa con la concatenación de cadenas y variables?
Daniel Springer

92

Tuve este problema: eventualmente descubrí que la razón era que había incluido \caracteres en la cadena. Si tiene alguno de estos, "escape" con ellos \\y debería funcionar bien.


2
@Leo se llaman 'personajes de escape', y esto es bastante estándar. Puede poner un rantes de la cadena para evitar que causen problemas.
Eric

17

(Suponiendo que no tiene / quiere saltos de línea en su cadena ...)

¿Cuánto dura realmente esta cuerda?

Sospecho que hay un límite en cuanto al tiempo que puede durar una línea leída de un archivo o de la línea de comandos, y debido a que el final de la línea se interrumpe, el analizador ve algo así s1="some very long string..........(sin un final ") y, por lo tanto, arroja un error de análisis.

Puede dividir líneas largas en varias líneas escapando de los saltos de línea en su fuente de esta manera:

s1="some very long string.....\
...\
...."

8

En mi situación, tenía \r\nen mis cadenas de diccionario entre comillas simples. Reemplacé todas las instancias de \rcon \\ry \ncon \\ny solucionó mi problema, devolviendo correctamente los saltos de línea escapados en el dict evaluado.

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....

6

Me enfrenté a un problema similar. Tenía una cadena que contenía la ruta a una carpeta en Windows, por ejemplo, C:\Users\el problema es que \es un carácter de escape y, por lo tanto, para usarlo en cadenas necesita agregar uno más \.

Incorrecto: C:\Users\

Correcto: C:\\\Users\\\


4

También tuve este problema, aunque había respuestas aquí, quiero un punto importante para esto después de /que no haya espacios vacíos.


2

También recibí este mensaje de error exacto, para mí el problema se solucionó agregando un "\"

Resulta que a mi cadena larga, dividida en aproximadamente ocho líneas con "\" al final, le faltaba una "\" en una línea.

Python IDLE no especificó un número de línea en el que estaba este error, pero resaltó en rojo una declaración de asignación de variable totalmente correcta, lo que me hizo perder el conocimiento. La declaración de cadena deforme real (varias líneas largas con "\") era adyacente a la declaración que se resaltaba. Quizás esto ayude a alguien más.


2

En mi caso, uso Windows, así que tengo que usar comillas dobles en lugar de simples.

C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop

2

Estaba recibiendo este error en la función postgresql. Tenía un SQL largo que dividí en varias líneas con \ para una mejor legibilidad. Sin embargo, ese era el problema. Eliminé todo y los hice en una línea para solucionar el problema. Estaba usando pgadmin III.


2

En mi caso con Mac OS X, tuve la siguiente declaración:

model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)

Estaba recibiendo el error:

  File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
                                                                             ^
SyntaxError: EOL while scanning string literal

Después de cambiar a:

model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")

Funcionó...

David


2

Puedes probar esto:

s = r'long\annoying\path'

1
Esa es la mejor respuesta. También puede intentarlo s = r'long\annoying\path\\'.
shahar_m

1

Su variable(s1)abarca varias líneas. Para hacer esto (es decir, si desea que su cadena abarque varias líneas), debe usar comillas triples ("" ").

s1="""some very long 
string............"""

1

¡En este caso, tres citas simples o tres citas dobles funcionarán! Por ejemplo:

    """Parameters:
    ...Type something.....
    .....finishing statement"""

O

    '''Parameters:
    ...Type something.....
    .....finishing statement'''

0

La mayoría de las respuestas anteriores son correctas y mi respuesta es muy similar a aaronasterling, también podría hacer 3 citas simples s1 = '' 'una cadena muy larga ............' ''


0

Me enfrenté al mismo problema al acceder a cualquier directorio del disco duro. Luego lo resolví de esta manera.

 import os
 os.startfile("D:\folder_name\file_name") #running shortcut
 os.startfile("F:") #accessing directory

ingrese la descripción de la imagen aquí

La imagen de arriba muestra un error y un resultado resuelto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.