logo

EOL en Python

Comme nous le savons, un langage de programmation comme Python est un langage interprété, ce qui implique essentiellement que chaque bloc ou ligne de code est traité un par un, plutôt que de changer complètement l'ensemble du programme en un code de bas niveau.

Chaque fois que l'interpréteur de Python analyse une ligne de code et remarque quelque chose d'inhabituel, il génère une erreur connue sous le nom d'erreur de syntaxe. Généralement, une parenthèse manquante, un guillemet de fin manquant et d'autres anomalies fondamentales dans la syntaxe sont la raison pour laquelle les erreurs ont été générées.

Dans le tutoriel suivant, nous allons découvrir l'une des erreurs de syntaxe en Python connue sous le nom d'EOL, qui survient généralement lorsque l'on essaie de scanner une chaîne littérale.

Comprendre la signification d’EOL

Nous devons comprendre efficacement la signification d’EOL avant de résoudre un problème. EOL est l'abréviation de « End of Line ». L'erreur EOL signifie que l'interpréteur de Python a atteint la fin de la ligne lors de l'analyse de la chaîne littérale.

Les chaînes littérales, également appelées constantes, doivent être placées entre guillemets simples ou doubles. Atteindre la « Fin de ligne » lorsque nous essayons de numériser signifie que nous avons atteint le dernier caractère de la chaîne et que nous n'avons pas rencontré les guillemets de fin.

Considérons un exemple de base démontrant comment l'erreur EOL est générée.

Exemple:

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

Sortir:

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

Explication:

Dans l'extrait de code ci-dessus, nous avons défini une chaîne littérale ; cependant, nous avons manqué un guillemet à la fin de la chaîne, ce qui augmentait le erreur de syntaxe appelé EOL lors de l'impression de cette chaîne pour les utilisateurs.

Dans la section de sortie, nous pouvons observer une petite flèche pointant vers le dernier caractère de la chaîne, démontrant que l'erreur s'est produite lorsque le programme a tenté d'analyser ce segment de l'instruction.

Maintenant que nous avons compris le problème, comprenons quelques cas où cette erreur peut apparaître lors de l'exécution d'un code python.

Correction de « Erreur de syntaxe : EOL lors de l'analyse de la chaîne littérale. »

Nous pouvons rencontrer cette erreur dans quatre situations principales lorsque nous travaillons sur un programme Python. Ces quatre situations principales sont les suivantes :

  1. Il manque le guillemet final
  2. Utiliser un guillemet final incorrect
  3. Chaîne constante s'étendant sur plusieurs lignes
  4. Utiliser une barre oblique inverse avant le guillemet final

Commençons par comprendre chacune de ces situations et essayons de les contourner.

Il manque le guillemet final

Comme indiqué dans l'extrait de code précédent, l'interpréteur Python génère une erreur de syntaxe chaque fois qu'il atteint la fin du littéral de chaîne et découvre que le guillemet est manquant.

Exemple:

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

Explication:

On peut observer que le guillemet à la fin de la chaîne littérale est manquant, ce qui justifie également l'erreur de syntaxe. Chaque langage possède peu de règles fondamentales concernant la syntaxe, qui, lorsqu'elles sont violées, entraînent des erreurs.

Considérons maintenant la syntaxe suivante comme solution au problème ci-dessus.

Solution:

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

Sortir:

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

Explication:

Dans l’extrait de code ci-dessus, nous pouvons observer que nous avons inclus le guillemet à la fin de la chaîne littérale. En conséquence, la chaîne est imprimée avec succès pour les utilisateurs sans générer d’erreur de syntaxe.

Utiliser un guillemet final incorrect

Nous pouvons utiliser ' ' ainsi que ' ' afin de contenir une certaine constante de chaîne en Python. Cependant, un programmeur utilise souvent un guillemet incorrect à la fin de la valeur de la chaîne. Une telle situation amène le programme à générer une erreur de syntaxe en termes d'EOL.

Considérons une telle situation dans l'exemple suivant :

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) 

Sortir:

 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 

Explication:

Dans l'extrait de code ci-dessus, nous avons utilisé un guillemet incorrect à la fin de la valeur de chaîne, ce qui entraîne une erreur de syntaxe.

Nous pouvons éviter un tel problème en utilisant le guillemet correspondant à la fin de la chaîne, comme indiqué dans l’extrait de code suivant.

Solution:

 # 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) 

Sortir:

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

Explication:

Dans l'extrait de code ci-dessus, comme nous pouvons le constater, nous avons utilisé le guillemet correspondant à la fin de la chaîne qui nous aide à éviter toute erreur EOL.

Chaîne constante s'étendant sur plusieurs lignes

Il existe de nombreux programmeurs Python débutants qui commettent l'erreur d'étendre les instructions sur plusieurs lignes. Python prend en compte une nouvelle ligne comme fin d'instruction, contrairement à d'autres langages comme C++ et Java qui considèrent ';' comme fin des déclarations.

Prenons un exemple illustrant le même problème.

Exemple de problème :

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

Sortir:

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

Explication:

jbouton

Dans l’extrait de code ci-dessus, nous pouvons observer que le code peut paraître ordinaire ; cependant, dès que la ligne suivante commence, l'interpréteur Python met fin à cette instruction, générant une erreur de syntaxe pour ne pas avoir entouré la constante de chaîne.

Cependant, nous pouvons résoudre ce problème en utilisant différentes méthodes, comme indiqué ci-dessous :

Solution 1 : utiliser le «   » pour fournir l'effet d'une nouvelle ligne à la constante de chaîne

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

Sortir:

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

Explication:

Dans l'extrait de code ci-dessus, nous avons inclus le ' ' dans la constante de chaîne pour lui donner l’effet d’une nouvelle ligne. En conséquence, la constante chaîne divise l’instruction en plusieurs lignes.

Considérons maintenant une autre solution.

Solution 2 : utilisation de guillemets triples, ''' ou ''' pour stocker des constantes de chaîne multilignes

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

Sortir:

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

Explication:

Dans l'extrait de code ci-dessus, nous avons utilisé le guillemet triple, ''' afin de stocker des constantes de chaîne multilignes.

Utiliser une barre oblique inverse avant le guillemet final

La barre oblique inverse '' est responsable de l'échappement de la chaîne et provoque l'erreur de syntaxe.

Considérons l'exemple suivant.

Exemple:

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

Sortir:

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

Explication:

Dans l'extrait de code ci-dessus, nous avons utilisé une barre oblique inverse '' afin de séparer les chemins du dossier les uns des autres. Cependant, lors de l'exécution du programme, l'interpréteur Python a généré l'erreur de syntaxe.

La dernière barre oblique inverse avant le guillemet échappe à la constante de chaîne et l'interpréteur Python considère ' comme un seul personnage. Cette séquence d'échappement se traduit par un guillemet (') .

Nous pouvons résoudre ce problème en utilisant l’extrait de code suivant.

Solution:

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

Sortir:

 String: D:PythonMy_Folder 

Explication:

Dans l'extrait de code ci-dessus, nous avons utilisé le '\' dans la constante de chaîne. En conséquence, l’interpréteur Python exécute cette chaîne sans générer d’erreur.