Zoals we weten is een programmeertaal als Python een geïnterpreteerde taal, wat in wezen inhoudt dat elk blok of elke regel code één voor één wordt verwerkt, in plaats van het hele programma helemaal naar een code op laag niveau te veranderen.
Telkens wanneer de tolk van Python een regel code scant en iets onopvallends opmerkt, wordt er een fout gegenereerd die bekend staat als de syntaxisfout. Over het algemeen zijn de fouten veroorzaakt door een ontbrekend haakje, een ontbrekend eindaanhalingsteken en andere fundamentele afwijkingen in de syntaxis.
In de volgende tutorial gaan we een van de syntaxisfouten in Python ontdekken, bekend als EOL, die meestal optreedt als we een letterlijke tekenreeks proberen te scannen.
De betekenis van EOL begrijpen
We moeten de betekenis van EOL effectief begrijpen voordat we een probleem oplossen. EOL is een afkorting voor 'End of Line'. De EOL-fout betekent dat de tolk van Python het einde van de regel heeft bereikt tijdens het letterlijk scannen van de tekenreeks.
De letterlijke tekenreeksen, ook wel constanten genoemd, moeten tussen enkele of dubbele aanhalingstekens staan. Als we het 'Einde van de regel' bereiken wanneer we proberen te scannen, betekent dit dat we het laatste teken van de tekenreeks hebben bereikt en de aanhalingstekens aan het einde niet zijn tegengekomen.
Laten we een eenvoudig voorbeeld bekijken dat aantoont hoe de EOL-fout ontstaat.
Voorbeeld:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Uitgang:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal
Uitleg:
In het bovenstaande codefragment hebben we een letterlijke tekenreeks gedefinieerd; We hebben echter een aanhalingsteken gemist aan het einde van de tekenreeks, waardoor de syntax error EOL gebeld tijdens het afdrukken van die tekenreeks voor de gebruikers.
In de uitvoersectie kunnen we een kleine pijl zien die naar het laatste teken van de string wijst, wat aantoont dat de fout is opgetreden toen het programma dat segment van de instructie probeerde te parseren.
Nu we het probleem hebben begrepen, gaan we kijken naar enkele gevallen waarin deze fout kan optreden tijdens het uitvoeren van een Python-code.
De 'Syntaxisfout: EOL tijdens het scannen van de letterlijke tekenreeks' wordt opgelost.
We kunnen deze fout in vier hoofdsituaties tegenkomen tijdens het werken aan een Python-programma. Deze vier hoofdsituaties zijn zoals hieronder weergegeven:
- Het eindaanhalingsteken ontbreekt
- Het onjuiste eindaanhalingsteken gebruiken
- String constant uitrekken naar meerdere regels
- Gebruik een backslash vóór het aanhalingsteken aan het einde
Laten we elk van deze situaties beginnen te begrijpen en proberen er omheen te werken.
Het eindaanhalingsteken ontbreekt
Zoals besproken in het vorige codefragment, genereert de Python-interpreter een syntaxisfout wanneer hij het einde van de letterlijke tekenreeks bereikt en ontdekt dat het aanhalingsteken ontbreekt.
Voorbeeld:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Uitleg:
We kunnen vaststellen dat het aanhalingsteken aan het einde van de letterlijke tekenreeks ontbreekt, wat ook de syntaxisfout rechtvaardigt. Elke taal heeft weinig fundamentele regels met betrekking tot de syntaxis, die bij overtreding tot fouten leiden.
Laten we nu de volgende syntaxis beschouwen als de oplossing voor het bovenstaande probleem.
Oplossing:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
Uitgang:
String: This is my string literal, and it is broken...
Uitleg:
In het bovenstaande codefragment kunnen we zien dat we het aanhalingsteken aan het einde van de letterlijke tekenreeks hebben opgenomen. Als gevolg hiervan wordt de tekenreeks met succes voor de gebruikers afgedrukt zonder dat er een syntaxisfout optreedt.
Het onjuiste eindaanhalingsteken gebruiken
Wij kunnen er gebruik van maken '' net zoals '' om een bepaalde stringconstante in Python te omsluiten. Een programmeur gebruikt echter vaak een onjuist aanhalingsteken aan het einde van de tekenreekswaarde. Een dergelijke situatie zorgt ervoor dat het programma een syntaxisfout genereert in termen van EOL.
Laten we een dergelijke situatie in het volgende voorbeeld bekijken:
Voorbeeld:
# 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)
Uitgang:
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
Uitleg:
In het bovenstaande codefragment hebben we het onjuiste aanhalingsteken gebruikt aan het einde van de tekenreekswaarde, wat resulteert in de syntaxisfout.
We kunnen een dergelijk probleem voorkomen door het overeenkomende aanhalingsteken aan het einde van de tekenreeks te gebruiken, zoals weergegeven in het volgende codefragment.
Oplossing:
# 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)
Uitgang:
String: This is my string literal with wrong quotation mark at the end.
Uitleg:
Zoals we kunnen zien, hebben we in het bovenstaande codefragment het overeenkomende aanhalingsteken aan het einde van de tekenreeks gebruikt, zodat we EOL-fouten kunnen voorkomen.
String constant uitrekken naar meerdere regels
Er zijn verschillende beginnende Python-programmeurs die de fout maken instructies uit te rekken tot meer dan één regel. Python houdt rekening met een nieuwe regel als het einde van de instructie, in tegenstelling tot andere talen zoals C++ en Java die daar rekening mee houden ';' als einde van uitspraken.
Laten we een voorbeeld bekijken dat hetzelfde probleem aantoont.
Probleemvoorbeeld:
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Uitgang:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
Uitleg:
leer selenium
In het bovenstaande codefragment kunnen we zien dat de code er misschien gewoon uitziet; Zodra de volgende regel echter begint, maakt de Python-interpreter een einde aan die instructie, waardoor een syntaxisfout ontstaat omdat de stringconstante niet is omsloten.
We kunnen dit probleem echter op verschillende manieren oplossen, zoals hieronder weergegeven:
Oplossing 1: gebruik ' ' om het effect van een nieuwe regel op de tekenreeksconstante te geven
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Uitgang:
String: This is my string literal... this is my new line
Uitleg:
In het bovenstaande codefragment hebben we de 'N' in de stringconstante om er het effect van een nieuwe regel aan te geven. Als gevolg hiervan verdeelt de stringconstante de instructie in meerdere regels.
Laten we nu een andere oplossing overwegen.
Oplossing 2: Gebruik drievoudige aanhalingstekens, ''' of ''' om tekenreeksconstanten van meerdere regels op te slaan
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
Uitgang:
String: This is my string literal... this is my new line
Uitleg:
In het bovenstaande codefragment hebben we het drievoudige aanhalingsteken gebruikt: ''' om stringconstanten met meerdere regels op te slaan.
Gebruik een backslash vóór het aanhalingsteken aan het einde
De terugslag '' is verantwoordelijk voor het ontsnappen van de string en veroorzaakt de syntaxisfout.
Laten we het volgende voorbeeld bekijken.
Voorbeeld:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
Uitgang:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
Uitleg:
In het bovenstaande codefragment hebben we backslash gebruikt '' om de paden van de map van elkaar te scheiden. Tijdens de uitvoering van het programma veroorzaakte de Python-interpreter echter de syntaxisfout.
De laatste backslash vóór het aanhalingsteken ontsnapt aan de tekenreeksconstante, en de Python-interpreter houdt hier rekening mee ' als een enkel karakter. Deze ontsnappingsreeks vertaalt zich naar een aanhalingsteken (') .
We kunnen dit probleem oplossen met behulp van het volgende codefragment.
Oplossing:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Uitgang:
String: D:PythonMy_Folder
Uitleg:
In het bovenstaande codefragment hebben we de '\' in de stringconstante. Als resultaat voert de Python-interpreter die string uit zonder een fout te genereren.