SYNTAXERROR EOL podczas skanowania ciągu Literal?
Błędy składniowe są wykrywane przed uruchomieniem programów. Zazwyczaj jest to po prostu błąd pisania lub Błąd składniowy. Taki błąd w Pythonie to SyntaxError EOL podczas skanowania ciągu literalnego.
ten błąd składni występuje, gdy interpreter skanuje literały łańcuchów i naciska EOL (’koniec linii’). Ale jeśli nie znajdzie określonej postaci przed EOL, błąd zostanie podniesiony.
zrozummy to bardziej za pomocą przykładu.
co to jest „SyntaxError EOL podczas skanowania ciągu literalnego”?
błąd SyntaxError EOL(End of Line) występuje, gdy interpreter Pythona nie znajdzie określonego znaku lub zestawu znaków przed zakończeniem linii kodu. Po wystąpieniu błędu wykonywanie kodu zostaje wstrzymane.
- brakujące cytaty do zamknięcia ciągu
- ciąg rozszerza się po jednej linii
brakujące cytaty do zamknięcia ciągu:
zamykając łańcuch, często zapominamy dodać odwrócony przecinek (pojedynczy lub podwójny). Gdy tak się dzieje, interpreter Pythona nie jest w stanie znaleźć końca linii podczas skanowania ciągu. W ten sposób występuje błąd SyntaxError EOL.
przykład 1:
MyList = if not MyList: print("MyList is emptyelse: print("MyList is not empty")
wyjście:
File "main.py", line 3 print("MyList is empty ^SyntaxError: EOL while scanning string literal
Wyjaśnienie
w powyższym kodzie zainicjowaliśmy pustą listę MyList i użyliśmy bloku if-else do wypisania, czy 'MyList’ jest pusta czy nie. Wewnątrz bloku if Instrukcja print jest używana do drukowania łańcucha. Ale ciągowi brakuje podwójnych odwróconych przecinków na końcu. Z powodu brakujących przecinków interpreter Pythona nie jest w stanie znaleźć końca łańcucha.
w ten sposób występuje błąd SyntaxError.
rozwiązanie
upewnij się, że ciąg powinien być zawsze zamykany w pojedynczych lub podwójnych cudzysłowach.
poprawny kod
llist = if not llist: print("List is empty")else: print("List is not empty")
wyjście
MyList is empty
ciąg rozszerza się po jednej linii
w Pythonie nie możemy rozszerzyć naszego ciągu, który jest zamknięty w pojedynczym lub podwójnym odwróconym przecinku po pojedynczej linii. Jeśli spróbujemy to zrobić, pojawi się błąd „SyntaxError EOL while scanning the string literal occups”. Jeśli chcemy, aby nasz łańcuch rozciągał się w wielu liniach, to powinny one być zamknięte w potrójnych odwróconych przecinkach (pojedynczych lub podwójnych).
Przykład 2:
ttuple = ()if not ttuple: print("Tuple isempty")else: print("Tuple is not empty")
Wyjście :
file "main.py", line 3 print("MyTuple is ^SyntaxError: EOL while scanning string literal
Wyjaśnienie
w powyższym kodzie zainicjowaliśmy pustą krotkę 'MyTuple’ i użyliśmy bloku if-else do wypisania, czy 'MyTuple’ jest pusty czy nie. Wewnątrz bloku if Instrukcja print jest używana do drukowania łańcucha. Ale ciąg jest rozszerzany w wielu liniach. I nie jest interpretowany przez interpreter Pythona. W ten sposób pojawia się błąd.
rozwiązanie
spróbuj utrzymać cały ciąg w jednej linii.
popraw Kod:
MyTuple = ()if not MyTuple: print("MyTuple is empty")else: print("MyTuple is not empty")
wyjście:
MyTuple is empty
Uwaga: Jeśli chcesz, aby ciąg był inicjalizowany w wielu wierszach. Następnie użyj potrójnego odwróconego przecinka albo pojedynczego („”pojedyncze cudzysłowy””) lub podwójnego („””podwójne cudzysłowy”””), aby zamknąć ciąg.
przykład:
MyTuple = ()if not MyTuple: print("""MyTuple is empty""")else: print("MyTuple is not empty")
wyjście:
MyTuple isempty
wniosek
mamy nadzieję, że wszystkie scenariusze wyjaśnione powyżej pomogą Ci zapobiec EOL SyntaxError podczas skanowania dosłownego błędu ciągu. Innym błędem, którego należy unikać, jest użycie niedopasowanych cytatów. Podczas zamykania ciągów upewnij się, że jeśli zaczyna się od pojedynczych cudzysłowów, musi kończyć się podwójnymi cudzysłowami.