Som vi vet att ett programmeringsspråk som Python är ett tolkat språk, vilket i huvudsak innebär att varje block eller rad kod bearbetas en efter en, snarare än att ändra hela programmet till en lågnivåkod helt och hållet.
Närhelst tolken av Python skannar en kodrad och märker något ovanligt, väcker det ett fel som kallas syntaxfel. I allmänhet är en saknad parentes, saknad slutcitat och andra grundläggande anomalier i syntaxen anledningen till att felen uppstod.
I följande handledning kommer vi att upptäcka ett av syntaxfelen i Python som kallas EOL, vilket vanligtvis höjs när vi försöker skanna en bokstavlig sträng.
Förstå innebörden av EOL
Vi måste förstå innebörden av EOL effektivt innan vi löser ett problem. EOL är en förkortning för 'End of Line'. EOL-felet betyder att Python-tolken nådde slutet av raden när den skannade strängen bokstavligt.
Strängliteralerna, även kända som konstanter, måste omges av enkla eller dubbla citattecken. Att nå 'Radens slut' när vi försöker skanna betyder att vi har nått det sista tecknet i strängen och inte har stött på de avslutande citattecken.
Låt oss överväga ett grundläggande exempel som visar hur EOL-felet uppstår.
Exempel:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Produktion:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal
Förklaring:
I ovanstående kodavsnitt har vi definierat en bokstavlig sträng; vi har dock missat ett citattecken i slutet av strängen, vilket höjde syntaxfel kallas EOL medan den strängen skrevs ut för användarna.
I utgångssektionen kan vi observera en liten pil som pekar på det sista tecknet i strängen, vilket visar att felet uppstod när programmet försökte analysera det segmentet av satsen.
Nu när vi har förstått problemet, låt oss förstå några fall där det här felet kan uppstå när en python-kod körs.
Åtgärda 'Syntaxfel: EOL vid skanning av sträng literal.'
Vi kan stöta på detta fel i fyra huvudsituationer när vi arbetar med ett Python-program. Dessa fyra huvudsituationer är som visas nedan:
- Det avslutande citattecken saknas
- Använder felaktigt slutande citattecken
- Strängen sträcker sig konstant till flera linjer
- Använder omvänt snedstreck före sista citattecken
Låt oss börja förstå var och en av dessa situationer och försöka kringgå dem.
Det avslutande citattecken saknas
Som diskuterats i föregående kodavsnitt, ställer Python-tolkaren upp ett syntaxfel när den når slutet av strängen och upptäcker att citattecken saknas.
Exempel:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Förklaring:
Vi kan observera att citattecken i slutet av den bokstavliga strängen saknas, vilket också motiverar syntaxfelet. Varje språk har få grundläggande regler för syntax, som, när de överträds, resulterar i fel.
Låt oss nu betrakta följande syntax som lösningen för ovanstående problem.
Lösning:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
Produktion:
String: This is my string literal, and it is broken...
Förklaring:
I ovanstående kodavsnitt kan vi observera att vi har inkluderat citattecken i slutet av den bokstavliga strängen. Som ett resultat skrivs strängen ut för användarna utan att något syntaxfel uppstår.
Använder felaktigt slutande citattecken
Vi kan använda oss av ' ' såväl som ' ' för att innesluta en viss strängkonstant i Python. En programmerare använder dock ofta ett felaktigt citattecken i slutet av strängvärdet. En sådan situation gör att programmet skapar ett syntaxfel i termer av EOL.
Låt oss överväga en sådan situation i följande exempel:
Exempel:
# 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)
Produktion:
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
Förklaring:
I ovanstående kodavsnitt har vi använt det felaktiga citattecken i slutet av strängvärdet som resulterar i syntaxfelet.
Vi kan undvika ett sådant problem genom att använda det matchande citattecken i slutet av strängen, som visas i följande kodavsnitt.
Lösning:
# 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)
Produktion:
String: This is my string literal with wrong quotation mark at the end.
Förklaring:
I ovanstående kodavsnitt, som vi kan observera, har vi använt det matchande citattecken i slutet av strängen som hjälper oss att undvika EOL-fel.
Strängen sträcker sig konstant till flera linjer
Det finns olika nybörjare Python-programmerare som gör misstaget att sträcka ut uttalanden till mer än en rad. Python tar hänsyn till en ny rad som slutet på uttalandet, till skillnad från andra språk som C++ och Java som tar hänsyn till ';' som slutet på uttalanden.
Låt oss överväga ett exempel som visar samma problem.
Exempel på problem:
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Produktion:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
Förklaring:
kanel vs kompis
I ovanstående kodavsnitt kan vi observera att koden kan se vanlig ut; men så snart nästa rad påbörjas, sätter Python-tolken ett slut på den satsen och höjer ett syntaxfel för att inte omsluta strängkonstanten.
Vi kan dock lösa detta problem med olika metoder som visas nedan:
Lösning 1: Använd ' ' för att ge effekten av en ny rad till strängkonstanten
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Produktion:
String: This is my string literal... this is my new line
Förklaring:
I kodavsnittet ovan har vi inkluderat ' ' i strängkonstanten för att ge effekten av en ny linje till den. Som ett resultat bryter strängkonstanten upp uttalandet i flera rader.
Låt oss nu överväga en annan lösning.
Lösning 2: Använd tredubbla citattecken, ''' eller ''' för att lagra flerradiga strängkonstanter
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
Produktion:
String: This is my string literal... this is my new line
Förklaring:
I ovanstående kodavsnitt har vi använt det tredubbla citattecken, ''' för att lagra flerradiga strängkonstanter.
Använder omvänt snedstreck före sista citattecken
Omvänd snedstreck '' är ansvarig för att escape strängen och orsakar syntaxfelet.
Låt oss överväga följande exempel.
Exempel:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
Produktion:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
Förklaring:
I ovanstående kodavsnitt har vi använt snedstreck '' för att separera sökvägarna till mappen från varandra. Men under körningen av programmet visade Python-tolken syntaxfelet.
Det sista snedstrecket före citattecknet undviker strängkonstanten, och Python-tolken anser ' som ett enda tecken. Denna flyktsekvens översätts till ett citattecken (') .
Vi kan lösa det här problemet med följande kodavsnitt.
Lösning:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Produktion:
String: D:PythonMy_Folder
Förklaring:
I kodavsnittet ovan har vi använt '\' i strängkonstanten. Som ett resultat exekverar Python-tolken den strängen utan att skapa ett fel.