logo

EOL Pythonban

Mint tudjuk, egy olyan programozási nyelv, mint a Python, egy értelmezett nyelv, ami lényegében azt jelenti, hogy minden blokkot vagy kódsort egymás után dolgoznak fel, ahelyett, hogy az egész programot egy alacsony szintű kódra cserélnék.

Amikor a Python értelmezője átvizsgál egy kódsort, és valami rendkívüli dolgot észlel, akkor egy szintaktikai hibaként ismert hibát vet fel. Általában a hiányzó zárójel, a hiányzó záró idézet és a szintaxis egyéb alapvető anomáliái okozzák a hibákat.

A következő oktatóanyagban a Python egyik EOL-ként ismert szintaktikai hibáját fogjuk felfedezni, amely általában akkor jelenik meg, amikor egy karakterlánc-literált próbálunk megvizsgálni.

Az EOL jelentésének megértése

A probléma megoldása előtt hatékonyan meg kell értenünk az EOL jelentését. Az EOL az „End of Line” rövidítése. Az EOL hiba azt jelzi, hogy a Python interpreter a sor végére ért a karakterlánc-literál vizsgálata közben.

A karakterlánc-literálokat, más néven konstansokat egyszeres vagy kettős idézőjelbe kell tenni. A „Sorvég” elérése, amikor megpróbáljuk a keresést, azt jelenti, hogy elértük a karakterlánc utolsó karakterét, és nem találkoztunk a befejező idézőjelekkel.

Tekintsünk egy alappéldát, amely bemutatja az EOL hiba felvetését.

Példa:

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

Kimenet:

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

Magyarázat:

A fenti kódrészletben definiáltunk egy string literált; azonban kihagytunk egy idézőjelet a karakterlánc végéről, ami megemelte a szintaktikai hiba EOL-t hívott, miközben kinyomtatta ezt a karakterláncot a felhasználók számára.

A kimeneti részben egy kis nyíl látható, amely a karakterlánc utolsó karakterére mutat, jelezve, hogy a hiba akkor történt, amikor a program megpróbálta elemezni az utasítás adott szegmensét.

Most, hogy megértettük a problémát, ismerjük meg néhány olyan esetet, amikor ez a hiba python-kód futtatása közben jelentkezhet.

A 'Syntax Error: EOL string literal vizsgálata közben' hiba javítása.

Négy fő helyzetben találkozhatunk ezzel a hibával, miközben Python programon dolgozunk. Ez a négy fő helyzet az alábbiak szerint látható:

  1. Hiányzik a záró idézőjel
  2. Helytelen záró idézőjel használata
  3. Húrok folyamatos nyújtása több sorra
  4. Fordított perjel használata a záró idézőjel előtt

Kezdjük el megérteni ezeket a helyzeteket, és próbáljuk megkerülni őket.

Hiányzik a záró idézőjel

Amint azt az előző kódrészletben tárgyaltuk, a Python értelmező szintaktikai hibát jelez, amikor eléri a karakterlánc-literál végét, és felfedezi, hogy hiányzik az idézőjel.

Példa:

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

Magyarázat:

Megfigyelhetjük, hogy hiányzik az idézőjel a literális karakterlánc végén, ami szintén indokolja a szintaktikai hibát. Minden nyelvnek van néhány alapvető szintaktikai szabálya, amelyek megszegése hibákhoz vezet.

Tekintsük most a következő szintaxist a fenti probléma megoldásának.

Megoldás:

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

Kimenet:

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

Magyarázat:

A fenti kódrészletben megfigyelhetjük, hogy a literális karakterlánc végére idézőjelet tettünk. Ennek eredményeként a karakterláncot a rendszer sikeresen kinyomtatja a felhasználók számára anélkül, hogy szintaktikai hiba lépne fel.

Helytelen záró idézőjel használata

Ki tudjuk használni '' szintén '' annak érdekében, hogy egy bizonyos karakterlánc-állandót bezárjon a Pythonba. A programozó azonban gyakran hibás idézőjelet használ a karakterlánc értékének végén. Ilyen helyzet miatt a program szintaktikai hibát vet fel az EOL szempontjából.

Tekintsünk egy ilyen helyzetet a következő példában:

Példa:

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

Kimenet:

 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 

Magyarázat:

A fenti kódrészletben hibás idézőjelet használtunk a karakterlánc-érték végén, ami szintaktikai hibát eredményez.

Ezt a problémát elkerülhetjük, ha a karakterlánc végén egyező idézőjelet használunk, ahogy az a következő kódrészletben is látható.

Megoldás:

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

Kimenet:

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

Magyarázat:

A fenti kódrészletben, amint azt megfigyelhetjük, a karakterlánc végén található egyező idézőjelet használtuk, amely segít elkerülni az EOL-hibákat.

A karakterlánc folyamatos nyújtása több sorra

Különféle kezdő Python-programozók elkövetik azt a hibát, hogy egynél több sorra feszítik ki az utasításokat. A Python egy új sort vesz figyelembe az utasítás végén, ellentétben más nyelvekkel, mint például a C++ és a Java, amelyek figyelembe veszik ';' kijelentések végeként.

Vegyünk egy példát, amely ugyanezt a problémát mutatja be.

Példa a problémára:

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

Kimenet:

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

Magyarázat:

npm gyorsítótár-tisztítási erő

A fenti kódrészletben megfigyelhetjük, hogy a kód hétköznapinak tűnhet; azonban amint a következő sor elkezdődik, a Python értelmező véget vet az utasításnak, és szintaktikai hibát vet fel, mert nem tartalmazza a karakterlánc állandót.

Ezt a problémát azonban többféle módszerrel is megoldhatjuk, az alábbiak szerint:

1. megoldás: A ' ' segítségével biztosítsa egy új sor hatását a karakterlánc-állandóhoz

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

Kimenet:

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

Magyarázat:

A fenti kódrészletben a ' ' a karakterlánc állandóban, hogy egy új sor hatását biztosítsa számára. Ennek eredményeként a karakterlánc-konstans több sorra bontja az utasítást.

Most nézzünk meg egy másik megoldást.

2. megoldás: hármas idézőjel, '''' vagy '''' többsoros karakterlánc-állandók tárolására

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

Kimenet:

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

Magyarázat:

A fenti kódrészletben a hármas idézőjelet használtuk, '''' többsoros karakterlánc-konstansok tárolására.

Fordított perjel használata a záró idézőjel előtt

A fordított perjel '' felelős a karakterlánc elkerüléséért, és szintaktikai hibát okoz.

Tekintsük a következő példát.

Példa:

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

Kimenet:

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

Magyarázat:

A fenti kódrészletben fordított perjelet használtunk '' a mappa elérési útjainak egymástól való elkülönítése érdekében. A program végrehajtása során azonban a Python interpreter felvetette a szintaktikai hibát.

Az idézőjel előtti utolsó fordított perjel kihagyja a karakterlánc-állandót, és a Python értelmező figyelembe veszi ' egyetlen karakterként. Ez a escape szekvencia idézőjelnek felel meg (') .

Ezt a problémát a következő kódrészlet segítségével tudjuk megoldani.

Megoldás:

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

Kimenet:

 String: D:PythonMy_Folder 

Magyarázat:

A fenti kódrészletben a '\' a string állandóban. Ennek eredményeként a Python értelmező hibajelenség nélkül végrehajtja ezt a karakterláncot.