Come sappiamo, un linguaggio di programmazione come Python è un linguaggio interpretato, il che implica essenzialmente che ogni blocco o riga di codice venga elaborato uno dopo uno, anziché modificare del tutto l'intero programma in un codice di basso livello.
Ogni volta che l'interprete di Python esegue la scansione di una riga di codice e nota qualcosa di non eccezionale, genera un errore noto come errore di sintassi. In genere, la mancanza di una parentesi, una virgoletta finale mancante e altre anomalie fondamentali nella sintassi sono il motivo per cui sono stati generati gli errori.
Nel seguente tutorial, scopriremo uno degli errori di sintassi in Python noto come EOL, che di solito viene generato quando proviamo a scansionare una stringa letterale.
Comprendere il significato di EOL
Dobbiamo comprendere efficacemente il significato di EOL prima di risolvere un problema. EOL è l'abbreviazione di 'Fine linea'. L'errore EOL significa che l'interprete di Python ha raggiunto la fine della riga durante la scansione della stringa letterale.
Le stringhe letterali, note anche come costanti, devono essere racchiuse tra virgolette singole o doppie. Raggiungere la 'Fine riga' quando proviamo a eseguire la scansione significa che abbiamo raggiunto l'ultimo carattere della stringa e non abbiamo incontrato le virgolette finali.
Consideriamo un esempio di base che dimostra come viene generato l'errore EOL.
Esempio:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Produzione:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal
Spiegazione:
Nello snippet di codice sopra, abbiamo definito una stringa letterale; tuttavia, abbiamo mancato una virgoletta alla fine della stringa, che sollevava il Errore di sintassi chiamato EOL durante la stampa di quella stringa per gli utenti.
Nella sezione di output possiamo osservare una piccola freccia che punta all'ultimo carattere della stringa, a dimostrazione che l'errore si era verificato quando il programma ha tentato di analizzare quel segmento dell'istruzione.
Ora che abbiamo compreso il problema, comprendiamo alcuni casi in cui questo errore può apparire durante l'esecuzione di un codice Python.
Correzione dell'errore di sintassi: EOL durante la scansione della stringa letterale.'
Possiamo riscontrare questo errore in quattro situazioni principali mentre lavoriamo su un programma Python. Queste quattro situazioni principali sono mostrate di seguito:
- Manca la virgoletta finale
- Utilizzo delle virgolette finali errate
- Stringa costante che si estende su più righe
- Utilizzando la barra rovesciata prima della virgoletta finale
Cominciamo a comprendere ciascuna di queste situazioni e proviamo a aggirarle.
Manca la virgoletta finale
Come discusso nel precedente frammento di codice, l'interprete Python genera un errore di sintassi ogni volta che raggiunge la fine della stringa letterale e scopre che mancano le virgolette.
Esempio:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Spiegazione:
Possiamo osservare che mancano le virgolette alla fine della stringa letterale, il che giustifica anche l'errore di sintassi. Ogni lingua ha poche regole fondamentali riguardo alla sintassi che, se violate, provocano errori.
Consideriamo ora la seguente sintassi come soluzione al problema precedente.
Soluzione:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
Produzione:
String: This is my string literal, and it is broken...
Spiegazione:
Nel frammento di codice sopra, possiamo osservare che abbiamo incluso le virgolette alla fine della stringa letterale. Di conseguenza, la stringa viene stampata correttamente per gli utenti senza generare errori di sintassi.
Utilizzo delle virgolette finali errate
Possiamo farne uso ' ' così come ' ' per racchiudere una certa stringa costante in Python. Tuttavia, un programmatore utilizza spesso virgolette errate alla fine del valore della stringa. Una situazione di questo tipo fa sì che il programma sollevi un errore di sintassi in termini di EOL.
Consideriamo una situazione del genere nel seguente esempio:
Esempio:
# 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)
Produzione:
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
Spiegazione:
Nello snippet di codice sopra, abbiamo utilizzato le virgolette errate alla fine del valore della stringa che risulta nell'errore di sintassi.
Possiamo evitare questo problema utilizzando le virgolette corrispondenti alla fine della stringa, come mostrato nel seguente frammento di codice.
Soluzione:
# 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)
Produzione:
String: This is my string literal with wrong quotation mark at the end.
Spiegazione:
Nello snippet di codice sopra, come possiamo osservare, abbiamo utilizzato le virgolette corrispondenti alla fine della stringa che ci aiutano a evitare qualsiasi errore EOL.
Stringa costante che si estende su più righe
Ci sono molti programmatori Python alle prime armi che commettono l'errore di allungare le istruzioni su più di una riga. Python prende in considerazione una nuova riga come fine dell'istruzione, a differenza di altri linguaggi come C++ e Java che la considerano ';' come fine delle dichiarazioni.
Consideriamo un esempio che dimostra lo stesso problema.
Esempio di 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)
Produzione:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
Spiegazione:
stringa booleana Java
Nel frammento di codice sopra, possiamo osservare che il codice può sembrare ordinario; tuttavia, non appena inizia la riga successiva, l'interprete Python pone fine a quell'istruzione sollevando un errore di sintassi per non aver racchiuso la costante stringa.
Tuttavia, possiamo risolvere questo problema utilizzando vari metodi come mostrato di seguito:
Soluzione 1: utilizzare ' ' per fornire l'effetto di una nuova riga alla costante di stringa
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Produzione:
String: This is my string literal... this is my new line
Spiegazione:
Nello snippet di codice sopra, abbiamo incluso il file 'N' nella costante stringa per fornirle l'effetto di una nuova riga. Di conseguenza, la costante stringa suddivide l'istruzione in più righe.
Consideriamo ora un’altra soluzione.
Soluzione 2: utilizzare le virgolette triple, ''' o ''' per memorizzare costanti di stringa su più righe
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
Produzione:
String: This is my string literal... this is my new line
Spiegazione:
Nello snippet di codice sopra, abbiamo utilizzato le virgolette triple, ''' per memorizzare costanti di stringhe su più righe.
Utilizzando la barra rovesciata prima della virgoletta finale
La barra rovesciata '' è responsabile dell'escape della stringa e causa l'errore di sintassi.
Consideriamo il seguente esempio.
Esempio:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
Produzione:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
Spiegazione:
Nello snippet di codice riportato sopra, abbiamo utilizzato la barra rovesciata '' per separare i percorsi della cartella gli uni dagli altri. Tuttavia, durante l'esecuzione del programma, l'interprete Python ha generato l'errore di sintassi.
L'ultima barra rovesciata prima delle virgolette sfugge alla costante della stringa e l'interprete Python ne tiene conto ' come un unico personaggio. Questa sequenza di escape si traduce in virgolette (') .
Possiamo risolvere questo problema utilizzando il seguente snippet di codice.
Soluzione:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Produzione:
String: D:PythonMy_Folder
Spiegazione:
Nello snippet di codice sopra, abbiamo utilizzato il file '\' nella costante di stringa. Di conseguenza, l'interprete Python esegue quella stringa senza generare errori.