logo

EOL en Python

Com sabem que un llenguatge de programació com Python és un llenguatge interpretat, la qual cosa implica essencialment que cada bloc o línia de codi es processa un darrere d'un, en lloc de canviar tot el programa a un codi de baix nivell.

Sempre que l'intèrpret de Python escaneja una línia de codi i nota alguna cosa no excepcional, genera un error conegut com a Error de sintaxi. En general, falta un claudàtor, una cita final que falta i altres anomalies fonamentals en la sintaxi són els motius pels quals es van generar els errors.

En el següent tutorial, descobrirem un dels errors de sintaxi de Python conegut com a EOL, que normalment es planteja quan intentem escanejar un literal de cadena.

Comprendre el significat de l'EOL

Hem d'entendre el significat de l'EOL de manera eficaç abans de resoldre un problema. EOL és l'abreviatura de 'End of Line'. L'error EOL significa que l'intèrpret de Python va arribar al final de la línia mentre escanejava el literal de cadena.

Els literals de cadena, també coneguts com a constants, s'han d'entregar entre cometes simples o dobles. Arribar al 'Final de línia' quan intentem escanejar significa que hem arribat a l'últim caràcter de la cadena i no hem trobat les cometes finals.

Considerem un exemple bàsic que demostra com es genera l'error EOL.

Exemple:

 # defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string) 

Sortida:

 File 'D:Python	ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal 

Explicació:

En el fragment de codi anterior, hem definit un literal de cadena; tanmateix, hem perdut una cometa al final de la cadena, que aixecava el error de sintaxi anomenat EOL mentre imprimia aquesta cadena per als usuaris.

A la secció de sortida, podem observar una petita fletxa que apunta a l'últim caràcter de la cadena, que demostra que l'error s'havia produït quan el programa va intentar analitzar aquest segment de la instrucció.

Ara que hem entès el problema, entenem alguns casos en què aquest error pot aparèixer mentre executem un codi Python.

S'ha corregit l''Error de sintaxi: EOL mentre s'escaneja el literal de cadena'.

Ens podem trobar amb aquest error en quatre situacions principals mentre treballem en un programa Python. Aquestes quatre situacions principals són les que es mostren a continuació:

  1. Falta la cometa final
  2. Utilitzant les cometes de final incorrectes
  3. Estirament constant de la cadena a diverses línies
  4. S'utilitza la barra invertida abans de la cometa final

Comencem a entendre cadascuna d'aquestes situacions i intentem solucionar-les.

Falta la cometa final

Tal com s'ha comentat al fragment de codi anterior, l'intèrpret de Python genera un error de sintaxi sempre que arriba al final del literal de cadena i descobreix que falta les cometes.

Exemple:

 # defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string) 

Explicació:

Podem observar que falta la cometa al final de la cadena literal, fet que també justifica l'error de sintaxi. Totes les llengües tenen poques regles fonamentals pel que fa a la sintaxi, que, quan es violen, donen lloc a errors.

Considerem ara la sintaxi següent com la solució del problema anterior.

Solució:

 # defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string) 

Sortida:

 String: This is my string literal, and it is broken... 

Explicació:

En el fragment de codi anterior, podem observar que hem inclòs les cometes al final de la cadena literal. Com a resultat, la cadena s'imprimeix per als usuaris amb èxit sense provocar cap error de sintaxi.

Utilitzant les cometes de final incorrectes

Podem fer ús ' ' així com ' ' per tal de tancar una determinada constant de cadena a Python. Tanmateix, un programador sovint utilitza unes cometes incorrectes al final del valor de la cadena. Aquesta situació fa que el programa generi un error de sintaxi en termes d'EOL.

Considerem aquesta situació en l'exemple següent:

Exemple:

 # defining a string value my_string = 'This is my string literal with wrong quotation mark at the end.' # printing the string value print('String:', my_string) 

Sortida:

 File 'D:Python	ernarypy.py', line 2 my_string = 'This is my string literal with wrong quotation mark at the end.' ^ SyntaxError: EOL while scanning string literal 

Explicació:

Al fragment de codi anterior, hem utilitzat les cometes incorrectes al final del valor de la cadena que provoca l'error de sintaxi.

Podem evitar aquest problema utilitzant les cometes coincidents al final de la cadena, tal com es mostra al fragment de codi següent.

Solució:

 # defining a string value my_string = 'This is my string literal with wrong quotation mark at the end.' # printing the string value print('String:', my_string) 

Sortida:

 String: This is my string literal with wrong quotation mark at the end. 

Explicació:

En el fragment de codi anterior, com podem observar, hem utilitzat les cometes coincidents al final de la cadena que ens ajuda a evitar qualsevol error EOL.

Estirament constant de la cadena a diverses línies

Hi ha diversos programadors novells de Python que cometen l'error d'estirar les declaracions a més d'una línia. Python té en compte una nova línia com a final de la declaració, a diferència d'altres llenguatges com C++ i Java que consideren ';' com el final de les declaracions.

Considerem un exemple que demostra el mateix problema.

Exemple de problema:

 # defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string) 

Sortida:

 File 'D:Python	ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal 

Explicació:

xacal vs llop

En el fragment de codi anterior, podem observar que el codi pot semblar normal; tanmateix, tan bon punt comença la línia següent, l'intèrpret de Python posa fi a aquesta declaració generant un error de sintaxi per no incloure la constant de cadena.

Tanmateix, podem resoldre aquest problema utilitzant diversos mètodes com es mostra a continuació:

Solució 1: utilitzant el ' ' per proporcionar l'efecte d'una línia nova a la constant de cadena

 # defining a string value my_string = 'This is my string literal...
 this is my new line' # printing the string value print('String:', my_string) 

Sortida:

 String: This is my string literal... this is my new line 

Explicació:

En el fragment de codi anterior, hem inclòs el ' ' a la constant de cadena per proporcionar-li l'efecte d'una nova línia. Com a resultat, la constant de cadena divideix la declaració en diverses línies.

Ara considerem una altra solució.

Solució 2: utilitzant cometes triples, ''' o ''' per emmagatzemar constants de cadena de diverses línies

 # defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string) 

Sortida:

 String: This is my string literal... this is my new line 

Explicació:

En el fragment de codi anterior, hem utilitzat les cometes triples, ''' per emmagatzemar constants de cadena de diverses línies.

S'utilitza la barra invertida abans de la cometa final

La barra invertida '' s'encarrega d'escapar la cadena i provoca l'error de sintaxi.

Considerem l'exemple següent.

Exemple:

 # storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string) 

Sortida:

 File 'D:Python	ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal 

Explicació:

En el fragment de codi anterior, hem utilitzat la barra invertida '' per tal de separar els camins de la carpeta entre si. Tanmateix, durant l'execució del programa, l'intèrpret de Python va generar l'error de sintaxi.

L'última barra invertida abans de les cometes escapa de la constant de cadena i l'intèrpret de Python considera ' com un únic personatge. Aquesta seqüència d'escapada es tradueix en cometes (') .

Podem resoldre aquest problema utilitzant el següent fragment de codi.

Solució:

 # storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string) 

Sortida:

 String: D:PythonMy_Folder 

Explicació:

En el fragment de codi anterior, hem utilitzat '\' a la constant de corda. Com a resultat, l'intèrpret de Python executa aquesta cadena sense provocar cap error.