Som vi ved, at et programmeringssprog som Python er et fortolket sprog, hvilket i det væsentlige indebærer, at hver blok eller linje kode behandles en efter en, snarere end at ændre hele programmet til en lav-niveau kode helt.
Når fortolkeren af Python scanner en kodelinje og bemærker noget usædvanligt, rejser det en fejl, kendt som syntaksfejlen. Generelt er en manglende parentes, manglende afsluttende anførselstegn og andre grundlæggende anomalier i syntaksen grunden til, at fejlene blev rejst.
I den følgende tutorial vil vi opdage en af syntaksfejlene i Python kendt som EOL, som normalt hæves, når vi forsøger at scanne en streng bogstavelig.
Forstå betydningen af EOL
Vi skal forstå betydningen af EOL effektivt, før vi løser et problem. EOL er en forkortelse for 'End of Line'. EOL-fejlen betyder, at Python-fortolkeren nåede slutningen af linjen, mens den scannede strengen.
Strengliteralerne, også kendt som konstanter, skal være omgivet af enkelte eller dobbelte anførselstegn. At nå 'End of Line', når vi forsøger at scanne, betyder, at vi har nået det sidste tegn i strengen og ikke er stødt på de afsluttende anførselstegn.
Lad os overveje et grundlæggende eksempel, der viser, hvordan EOL-fejlen er rejst.
Eksempel:
# 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
Forklaring:
I ovenstående kodestykke har vi defineret en streng bogstavelig; dog har vi savnet et anførselstegn i slutningen af strengen, som hævede syntaks fejl kaldet EOL, mens du udskriver den streng for brugerne.
I outputsektionen kan vi observere en lille pil, der peger på det sidste tegn i strengen, der viser, at fejlen var opstået, da programmet forsøgte at parse det segment af sætningen.
Nu hvor vi har forstået problemet, lad os forstå nogle tilfælde, hvor denne fejl kan forekomme, mens du udfører en python-kode.
Retter 'Syntaksfejl: EOL under scanning af streng literal'.
Vi kan støde på denne fejl i fire hovedsituationer, mens vi arbejder på et Python-program. Disse fire hovedsituationer er som vist nedenfor:
- Mangler det afsluttende anførselstegn
- Brug af det forkerte afsluttende anførselstegn
- Strengen strækker sig konstant til flere linjer
- Brug af skråstreg før det afsluttende anførselstegn
Lad os begynde at forstå hver af disse situationer og prøve at omgå dem.
Mangler det afsluttende anførselstegn
Som diskuteret i det forrige kodestykke, rejser Python-fortolkeren en syntaksfejl, når den når slutningen af strengen og opdager, at anførselstegn mangler.
Eksempel:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Forklaring:
Vi kan observere, at anførselstegn i slutningen af den bogstavelige streng mangler, hvilket også retfærdiggør syntaksfejlen. Hvert sprog har få grundlæggende regler vedrørende syntaks, som, når de overtrædes, resulterer i fejl.
Lad os nu overveje følgende syntaks som løsningen på ovenstå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...
Forklaring:
I ovenstående kodestykke kan vi observere, at vi har inkluderet anførselstegn i slutningen af den bogstavelige streng. Som et resultat udskrives strengen for brugerne uden at fremkalde nogen syntaksfejl.
Brug af det forkerte afsluttende anførselstegn
Vi kan gøre brug af ' ' såvel som ' ' for at omslutte en bestemt strengkonstant i Python. En programmør bruger dog ofte et forkert anførselstegn i slutningen af strengværdien. En sådan situation får programmet til at rejse en syntaksfejl i form af EOL.
Lad os overveje en sådan situation i følgende eksempel:
Eksempel:
# 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
Forklaring:
I ovenstående kodestykke har vi brugt det forkerte anførselstegn i slutningen af strengværdien, der resulterer i syntaksfejlen.
Vi kan undgå et sådant problem ved at bruge det matchende anførselstegn i slutningen af strengen, som vist i det følgende kodestykke.
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.
Forklaring:
I ovenstående kodestykke, som vi kan observere, har vi brugt det matchende anførselstegn i slutningen af strengen, der hjælper os med at undgå enhver EOL-fejl.
Strengen strækker sig konstant til flere linjer
Der er forskellige nybegyndere Python-programmører, der begår den fejl at strække udsagn til mere end én linje. Python tager højde for en ny linje som slutningen af sætningen, i modsætning til andre sprog såsom C++ og Java, der overvejer ';' som slutningen af udsagn.
Lad os overveje et eksempel, der viser det samme problem.
Eksempel 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
Forklaring:
vb og vb net
I ovenstående kodestykke kan vi observere, at koden kan se almindelig ud; men så snart den næste linje er begyndt, sætter Python-fortolkeren en ende på denne sætning og rejser en syntaksfejl for ikke at omslutte strengkonstanten.
Vi kan dog løse dette problem ved hjælp af forskellige metoder som vist nedenfor:
Løsning 1: Brug ' ' til at give effekten af en ny linje til strengkonstanten
# 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
Forklaring:
I ovenstående kodestykke har vi inkluderet ' ' i strengkonstanten for at give effekten af en ny linje til den. Som et resultat opdeler strengkonstanten sætningen i flere linjer.
Lad os nu overveje en anden løsning.
Løsning 2: Brug af tredobbelte anførselstegn, ''' eller ''' til at gemme strengkonstanter med flere linjer
# 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
Forklaring:
I ovenstående kodestykke har vi brugt det tredobbelte anførselstegn, ''' for at gemme strengkonstanter med flere linjer.
Brug af omvendt skråstreg før det afsluttende anførselstegn
Omvendt skråstreg '' er ansvarlig for at undslippe strengen og forårsager syntaksfejlen.
Lad os overveje følgende eksempel.
Eksempel:
# 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
Forklaring:
I ovenstående kodestykke har vi brugt til at skråstreg '' for at adskille mappens stier fra hinanden. Men under afviklingen af programmet rejste Python-fortolkeren Syntax-fejlen.
Den sidste skråstreg før anførselstegn undslipper strengkonstanten, og Python-fortolkeren overvejer ' som et enkelt tegn. Denne escape-sekvens oversættes til et anførselstegn (') .
Vi kan løse dette problem ved at bruge følgende kodestykke.
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
Forklaring:
I ovenstående kodestykke har vi brugt '\' i strengkonstanten. Som et resultat udfører Python-fortolkeren denne streng uden at rejse en fejl.