SyntaxError EOL kun skannataan merkkijono kirjaimellinen?
syntaksivirheet havaitaan ennen ohjelmien suorittamista. Yleensä kyseessä on vain kirjoitusvirhe tai syntaktinen virhe. Tällainen virhe Pythonissa on SyntaxError EOL skannattaessa merkkijonon kirjaimellista.
tämä syntaksivirhe tapahtuu, kun tulkki skannaa merkkijonon literaaleja ja osuu rivinvaihtoon (”rivin loppuun”). Mutta jos se ei löydä tiettyä merkkiä ennen EOL: ää, virhe nostetaan esiin.
Ymmärtäkäämme sitä enemmän esimerkin avulla.
mikä on ”SyntaxError EOL skannattaessa merkkijono kirjaimellinen”?
SyntaxError EOL(rivin loppu) – virhe syntyy, kun Python-tulkki ei löydä tiettyä merkkiä tai merkkijoukkoa ennen koodirivin päättymistä. Kun virhe nostetaan, koodin suoritus keskeytetään.
- puuttuvat lainausmerkit merkkijonon sulkemista varten
- merkkijono ulottuu yhden rivin yli
puuttuvat lainausmerkit merkkijonon sulkemista varten:
merkkijonoa suljettaessa unohdetaan usein lisätä lainausmerkki (yksittäinen tai kaksinkertainen). Kun näin tapahtuu, Python-tulkki ei löydä rivin loppua skannatessaan merkkijonoa. Näin SyntaxError EOL virhe tapahtuu.
Esimerkki 1:
MyList = if not MyList: print("MyList is emptyelse: print("MyList is not empty")
tuloste:
File "main.py", line 3 print("MyList is empty ^SyntaxError: EOL while scanning string literal
selitys
yllä olevassa koodissa olemme alustaneet tyhjän luettelon MyList-listan ja käyttäneet if-else-lohkoa tulostaaksemme, onko ”MyList” tyhjä vai ei. If-lohkon sisällä tulostuslausetta käytetään merkkijonon tulostamiseen. Narusta puuttuu kuitenkin lopussa kaksinkertaiset lainausmerkit. Puuttuvien pilkkujen vuoksi Python-tulkki ei löydä merkkijonon päätä.
näin syntyy SyntaxError-virhe.
ratkaisu
varmista, että merkkijono on aina suljettu yksi-tai kaksilainausmerkeissä.
oikea koodi
llist = if not llist: print("List is empty")else: print("List is not empty")
tuloste
MyList is empty
merkkijono ulottuu yhden rivin ohi
Pythonissa emme voi laajentaa merkkijonoamme, joka on suljettuna yhden tai kahden ylösalaisin olevan pilkun sisään yhden rivin ohi. Jos yritämme tehdä niin virhe ”SyntaxError EOL skannattaessa merkkijono kirjaimellinen tapahtuu” pop up. Jos haluamme meidän merkkijono laajentaa useita rivejä, sitten ne olisi suljettu kolminkertainen lainausmerkit (yhden tai kahden).
Esimerkki 2:
ttuple = ()if not ttuple: print("Tuple isempty")else: print("Tuple is not empty")
Tuloste :
file "main.py", line 3 print("MyTuple is ^SyntaxError: EOL while scanning string literal
selitys
yllä olevassa koodissa on alustettu tyhjä tuple ”MyTuple” ja käytetty if-else-lohkoa tulostamaan, onko ”MyTuple” tyhjä vai ei. If-lohkon sisällä tulostuslausetta käytetään merkkijonon tulostamiseen. Mutta merkkijono on laajennettu useita rivejä. Eikä sitä tulkitse python-tulkki. Näin virhe nousee esiin.
ratkaisu
yritä pitää koko merkkijono yhden rivin sisällä.
oikea koodi:
MyTuple = ()if not MyTuple: print("MyTuple is empty")else: print("MyTuple is not empty")
tuloste:
MyTuple is empty
Huomautus: Jos haluat, että merkkijono alustetaan useilla riveillä. Käytä sitten kolminkertainen lainausmerkit joko yhden (”Single lainausmerkit”’) tai kaksinkertainen (”””Double lainausmerkit”””) liittää merkkijonon.
esimerkki:
MyTuple = ()if not MyTuple: print("""MyTuple is empty""")else: print("MyTuple is not empty")
tuloste:
MyTuple isempty
päätelmä
toivomme, että kaikki yllä mainitut skenaariot auttavat sinua estämään SyntaxError EOL: n skannattaessa merkkijonon kirjaimellista virhettä. Toinen virhe, jota sinun täytyy välttää, on vääränlaisten lainausten käyttäminen. Kun suljet merkkijonoja, varmista, että jos se alkaa yksittäisillä lainausmerkeillä, sen on loputtava kaksinkertaisilla lainausmerkeillä.