Como sabemos, un lenguaje de programación como Python es un lenguaje interpretado, lo que esencialmente implica que cada bloque o línea de código se procesa uno tras uno, en lugar de cambiar todo el programa a un código de bajo nivel por completo.
Cada vez que el intérprete de Python escanea una línea de código y nota algo que no es excepcional, genera un error conocido como error de sintaxis. Generalmente, la falta de un corchete, la falta de una cita final y otras anomalías fundamentales en la sintaxis son las razones por las que se generaron los errores.
En el siguiente tutorial, descubriremos uno de los errores de sintaxis en Python conocido como EOL, que suele aparecer cuando intentamos escanear una cadena literal.
Comprender el significado de EOL
Debemos comprender el significado de EOL de manera efectiva antes de resolver un problema. EOL es la abreviatura de 'Fin de línea'. El error EOL significa que el intérprete de Python llegó al final de la línea mientras escaneaba la cadena literal.
Los literales de cadena, también conocidos como constantes, deben estar entre comillas simples o dobles. Llegar al 'Fin de línea' cuando intentamos escanear significa que hemos llegado al último carácter de la cadena y no hemos encontrado las comillas finales.
Consideremos un ejemplo básico que demuestra cómo se genera el error EOL.
Ejemplo:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Producción:
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ón:
En el fragmento de código anterior, hemos definido una cadena literal; sin embargo, hemos omitido una comilla al final de la cadena, lo que elevó la error de sintaxis llamado EOL mientras imprime esa cadena para los usuarios.
En la sección de salida, podemos observar una pequeña flecha que apunta al último carácter de la cadena, lo que demuestra que el error ocurrió cuando el programa intentó analizar ese segmento de la declaración.
Ahora que hemos entendido el problema, comprendamos algunos casos en los que este error puede aparecer al ejecutar un código Python.
Solucionando el 'Error de sintaxis: EOL al escanear la cadena literal'.
Podemos encontrar este error en cuatro situaciones principales mientras trabajamos en un programa Python. Estas cuatro situaciones principales se muestran a continuación:
- Faltan las comillas finales
- Usar las comillas finales incorrectas
- Cadena de estiramiento constante a varias líneas.
- Usar barra invertida antes de las comillas finales
Comencemos a comprender cada una de estas situaciones y tratemos de solucionarlas.
Faltan las comillas finales
Como se analizó en el fragmento de código anterior, el intérprete de Python genera un error de sintaxis cada vez que llega al final de la cadena literal y descubre que faltan las comillas.
Ejemplo:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Explicación:
Podemos observar que faltan las comillas al final de la cadena literal, lo que también justifica el error de sintaxis. Cada idioma tiene pocas reglas fundamentales con respecto a la sintaxis que, cuando se violan, dan como resultado errores.
Consideremos ahora la siguiente sintaxis como la solución al problema anterior.
Solución:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
Producción:
String: This is my string literal, and it is broken...
Explicación:
En el fragmento de código anterior, podemos observar que hemos incluido las comillas al final de la cadena literal. Como resultado, la cadena se imprime correctamente para los usuarios sin generar ningún error de sintaxis.
Usar las comillas finales incorrectas
Podemos hacer uso de ' ' así como ' ' para encerrar una determinada cadena constante en Python. Sin embargo, un programador suele utilizar comillas incorrectas al final del valor de la cadena. Tal situación hace que el programa genere un error de sintaxis en términos de EOL.
Consideremos tal situación en el siguiente ejemplo:
Ejemplo:
# 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)
Producción:
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ón:
En el fragmento de código anterior, utilizamos las comillas incorrectas al final del valor de la cadena, lo que genera un error de sintaxis.
Podemos evitar este problema utilizando las comillas coincidentes al final de la cadena, como se muestra en el siguiente fragmento de código.
Solución:
# 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)
Producción:
String: This is my string literal with wrong quotation mark at the end.
Explicación:
En el fragmento de código anterior, como podemos observar, hemos utilizado las comillas coincidentes al final de la cadena que nos ayudan a evitar cualquier error de EOL.
Cadena de estiramiento constante a varias líneas.
Hay varios programadores novatos de Python que cometen el error de extender las declaraciones a más de una línea. Python tiene en cuenta una nueva línea como final de la declaración, a diferencia de otros lenguajes como C++ y Java que consideran ';' como final de declaraciones.
Consideremos un ejemplo que demuestra el mismo problema.
Ejemplo 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)
Producción:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
Explicación:
rebanar java
En el fragmento de código anterior, podemos observar que el código puede parecer normal; sin embargo, tan pronto como comienza la siguiente línea, el intérprete de Python pone fin a esa declaración generando un error de sintaxis por no incluir la constante de cadena.
Sin embargo, podemos resolver este problema utilizando varios métodos como se muestra a continuación:
Solución 1: usar ' ' para proporcionar el efecto de una nueva línea a la constante 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)
Producción:
String: This is my string literal... this is my new line
Explicación:
En el fragmento de código anterior, hemos incluido el ' orte' en la constante de cadena para proporcionarle el efecto de una nueva línea. Como resultado, la constante de cadena divide la declaración en varias líneas.
Ahora consideremos otra solución.
Solución 2: usar comillas triples, ''' o ''' para almacenar constantes de cadena de varias líneas
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
Producción:
String: This is my string literal... this is my new line
Explicación:
En el fragmento de código anterior, hemos utilizado las comillas triples, ''' para almacenar constantes de cadena de varias líneas.
Usar barra invertida antes de las comillas finales
La barra invertida '' es responsable de escapar de la cadena y provoca el error de sintaxis.
Consideremos el siguiente ejemplo.
Ejemplo:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
Producción:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
Explicación:
En el fragmento de código anterior, hemos utilizado una barra invertida '' para separar las rutas de la carpeta entre sí. Sin embargo, durante la ejecución del programa, el intérprete de Python generó el error de sintaxis.
La última barra invertida antes de las comillas escapa a la constante de cadena y el intérprete de Python considera ' como un solo personaje. Esta secuencia de escape se traduce como una comilla. (') .
Podemos resolver este problema utilizando el siguiente fragmento de código.
Solución:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Producción:
String: D:PythonMy_Folder
Explicación:
En el fragmento de código anterior, hemos utilizado el '\' en la constante de cadena. Como resultado, el intérprete de Python ejecuta esa cadena sin generar un error.