SyntaxError EOL Při Skenování Řetězcový Literál?
chyby syntaxe jsou detekovány před spuštěním programů. Obvykle je to jen chyba při psaní nebo syntaktická chyba. Taková chyba v Pythonu je SyntaxError EOL při skenování literálu řetězce.
tato SyntaxError nastane, když interpret prohledá literály řetězců a zasáhne EOL („konec řádku“). Pokud však před EOL nenajde konkrétní znak, dojde k chybě.
pojďme to pochopit více pomocí příkladu.
co je to „SyntaxError EOL při skenování doslovného řetězce“?
chyba SyntaxError EOL (End Of Line) nastane, když interpret Pythonu nenajde konkrétní znak nebo sadu znaků před koncem řádku kódu. Po vyvolání chyby je spuštění kódu zastaveno.
- chybějící uvozovky pro uzavření řetězce
- řetězec přesahuje jeden řádek
chybějící uvozovky pro uzavření řetězce:
při zavírání řetězce často zapomínáme přidat obrácenou čárku(jednoduchou nebo dvojitou). Když k tomu dojde, interpret Pythonu není schopen najít konec řádku při skenování řetězce. Tak dochází k chybě SyntaxError EOL.
Příklad 1:
MyList = if not MyList: print("MyList is emptyelse: print("MyList is not empty")
Výstup:
File "main.py", line 3 print("MyList is empty ^SyntaxError: EOL while scanning string literal
Vysvětlení
Ve výše uvedeném kódu, musíme inicializovat prázdný seznam MyList a použít if-else blok pro tisk pokud MyList‘ je prázdný, nebo ne. Uvnitř bloku if se tiskový příkaz používá k tisku řetězce. Řetězec však na konci chybí dvojité obrácené čárky. A kvůli chybějícím čárkám není interpret Pythonu schopen najít konec řetězce.
dochází tedy k chybě SyntaxError.
Řešení
ujistěte Se, že řetězec by měl být vždy uzavřen v jednoduchých nebo dvojitých uvozovkách.
Správný Kód
llist = if not llist: print("List is empty")else: print("List is not empty")
Výstup
MyList is empty
Řetězec Přesahuje přes jeden Řádek
V Pythonu, nemůžeme rozšířit naše řetězec, který je uzavřen v jednoduchých nebo dvojitých obrácená čárka minulosti jeden řádek. Pokud se o to pokusíme, objeví se chyba „SyntaxError EOL při skenování literálu řetězce“. Pokud chceme, aby naše řetězec rozšířit na více řádků, pak by měly být uzavřeny do trojité uvozovky (jednoduché nebo dvojité).
Příklad 2:
ttuple = ()if not ttuple: print("Tuple isempty")else: print("Tuple is not empty")
Výstup :
file "main.py", line 3 print("MyTuple is ^SyntaxError: EOL while scanning string literal
Vysvětlení
Ve výše uvedeném kódu, máme inicializován jako prázdný tuple ‚MyTuple a použít if-else blok pro tisk pokud MyTuple‘ je prázdný, nebo ne. Uvnitř bloku if se tiskový příkaz používá k tisku řetězce. Řetězec je však rozšířen ve více řádcích. A není interpretován tlumočníkem Pythonu. Tak je nastolena chyba.
řešení
pokuste se udržet celý řetězec v jednom řádku.
správný kód:
MyTuple = ()if not MyTuple: print("MyTuple is empty")else: print("MyTuple is not empty")
výstup:
MyTuple is empty
Poznámka: Pokud chcete, aby byl řetězec inicializován ve více řádcích. Poté použijte trojité obrácené čárky buď jednoduché(„‚ jednotlivé uvozovky „‚) nebo dvojité(„““dvojité uvozovky „“““) k uzavření řetězce.
Příklad:
MyTuple = ()if not MyTuple: print("""MyTuple is empty""")else: print("MyTuple is not empty")
Výstup:
MyTuple isempty
Závěr
doufáme, že všechny scénáře vysvětleno výše vám pomůže zabránit SyntaxError EOL při skenování String literal chyba. Další chybou, kterou se musíte vyhnout, je použití neodpovídajících nabídek. Při zavírání řetězců se ujistěte, že pokud začíná jednoduchými uvozovkami, musí končit dvojitými uvozovkami.