logo

EOL w Pythonie

Jak wiemy, język programowania taki jak Python jest językiem interpretowanym, co zasadniczo oznacza, że ​​każdy blok lub linia kodu jest przetwarzany jeden po drugim, zamiast całkowicie zmieniać cały program na kod niskiego poziomu.

Ilekroć interpreter Pythona skanuje wiersz kodu i zauważa coś niezwykłego, zgłasza błąd znany jako błąd składniowy. Ogólnie rzecz biorąc, brak nawiasu, brak cudzysłowu końcowego i inne podstawowe anomalie w składni są przyczyną zgłaszania błędów.

W poniższym samouczku odkryjemy jeden z błędów składniowych w Pythonie, znany jako EOL, który zwykle pojawia się, gdy próbujemy przeskanować literał łańcuchowy.

Zrozumienie znaczenia EOL

Musimy skutecznie zrozumieć znaczenie EOL przed rozwiązaniem problemu. EOL jest skrótem od „końca linii”. Błąd EOL oznacza, że ​​interpreter Pythona dotarł do końca linii podczas skanowania literału ciągu.

Literały łańcuchowe, zwane także stałymi, muszą być ujęte w pojedyncze lub podwójne cudzysłowy. Osiągnięcie „końca linii” podczas próby skanowania oznacza, że ​​dotarliśmy do ostatniego znaku ciągu i nie napotkaliśmy końcowych cudzysłowów.

Rozważmy podstawowy przykład pokazujący, w jaki sposób zgłaszany jest błąd EOL.

Przykład:

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

Wyjście:

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

Wyjaśnienie:

W powyższym fragmencie kodu zdefiniowaliśmy literał łańcuchowy; jednakże pominęliśmy cudzysłów na końcu ciągu, co spowodowało podniesienie wartości błąd składni wywoływany EOL podczas drukowania tego ciągu dla użytkowników.

W sekcji wyjściowej możemy zaobserwować małą strzałkę wskazującą ostatni znak ciągu, co pokazuje, że błąd wystąpił, gdy program próbował przeanalizować ten segment instrukcji.

Teraz, gdy zrozumieliśmy problem, przyjrzyjmy się niektórym przypadkom, w których ten błąd może pojawić się podczas wykonywania kodu Pythona.

Naprawianie „Błądu składniowego: EOL podczas skanowania literału ciągu”.

Podczas pracy nad programem w języku Python możemy spotkać się z tym błędem w czterech głównych sytuacjach. Te cztery główne sytuacje przedstawiono poniżej:

  1. Brakuje cudzysłowu końcowego
  2. Użycie nieprawidłowego cudzysłowu końcowego
  3. Ciągłe rozciąganie sznurka do wielu linii
  4. Używanie ukośnika odwrotnego przed końcowym cudzysłowem

Zacznijmy rozumieć każdą z tych sytuacji i spróbujmy je obejść.

Brakuje cudzysłowu końcowego

Jak omówiono w poprzednim fragmencie kodu, interpreter Pythona zgłasza błąd składniowy za każdym razem, gdy dotrze do końca literału ciągu i wykryje, że brakuje cudzysłowu.

Przykład:

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

Wyjaśnienie:

Możemy zauważyć, że na końcu ciągu literału brakuje cudzysłowu, co również uzasadnia błąd składniowy. W każdym języku istnieje kilka podstawowych zasad dotyczących składni, których naruszenie skutkuje błędami.

Rozważmy teraz następującą składnię jako rozwiązanie powyższego problemu.

Rozwiązanie:

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

Wyjście:

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

Wyjaśnienie:

W powyższym fragmencie kodu możemy zauważyć, że na końcu ciągu dosłownego umieściliśmy cudzysłów. W rezultacie ciąg znaków zostanie pomyślnie wydrukowany dla użytkowników, nie powodując żadnego błędu składniowego.

Użycie nieprawidłowego cudzysłowu końcowego

Możemy skorzystać '' jak również '' aby zawrzeć pewną stałą łańcuchową w Pythonie. Jednak programista często używa nieprawidłowego cudzysłowu na końcu wartości ciągu. Taka sytuacja powoduje, że program zgłasza błąd składniowy w zakresie EOL.

Rozważmy taką sytuację na następującym przykładzie:

Przykład:

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

Wyjście:

 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 

Wyjaśnienie:

W powyższym fragmencie kodu użyliśmy nieprawidłowego cudzysłowu na końcu wartości ciągu, co skutkuje błędem składniowym.

Możemy uniknąć takiego problemu, używając pasującego cudzysłowu na końcu ciągu, jak pokazano w poniższym fragmencie kodu.

Rozwiązanie:

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

Wyjście:

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

Wyjaśnienie:

Jak możemy zauważyć, w powyższym fragmencie kodu użyliśmy pasującego cudzysłowu na końcu ciągu, co pomaga nam uniknąć błędów EOL.

Ciągłe rozciąganie sznurka do wielu linii

Wielu początkujących programistów Pythona popełnia błąd polegający na rozciąganiu instrukcji do więcej niż jednej linii. Python bierze pod uwagę nową linię na końcu instrukcji, w przeciwieństwie do innych języków, takich jak C++ i Java, które to uwzględniają ';' jako koniec wypowiedzi.

Rozważmy przykład ilustrujący ten sam problem.

Przykład problemu:

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

Wyjście:

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

Wyjaśnienie:

przekonwertuj ciąg na jsonobject Java

W powyższym fragmencie kodu możemy zauważyć, że kod może wyglądać zwyczajnie; jednakże zaraz po rozpoczęciu następnego wiersza interpreter Pythona kończy tę instrukcję, powodując błąd składni wynikający z niezamieszczenia stałej łańcuchowej.

Możemy jednak rozwiązać ten problem za pomocą różnych metod, jak pokazano poniżej:

Rozwiązanie 1: Użycie znaku „ ” w celu zapewnienia efektu nowej linii w stałej łańcuchowej

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

Wyjście:

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

Wyjaśnienie:

W powyższym fragmencie kodu umieściliśmy plik 'N' w stałej łańcuchowej, aby zapewnić jej efekt nowej linii. W rezultacie stała łańcuchowa dzieli instrukcję na wiele linii.

Rozważmy teraz inne rozwiązanie.

Rozwiązanie 2: Używanie potrójnych cudzysłowów „” lub „” do przechowywania wielowierszowych stałych łańcuchowych

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

Wyjście:

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

Wyjaśnienie:

W powyższym fragmencie kodu użyliśmy potrójnego cudzysłowu, ''' w celu przechowywania wieloliniowych stałych łańcuchowych.

Używanie ukośnika odwrotnego przed końcowym cudzysłowem

Ukośnik odwrotny „” jest odpowiedzialny za ucieczkę z ciągu i powoduje błąd składniowy.

Rozważmy następujący przykład.

Przykład:

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

Wyjście:

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

Wyjaśnienie:

W powyższym fragmencie kodu użyliśmy ukośnika odwrotnego „” aby oddzielić od siebie ścieżki folderu. Jednak podczas wykonywania programu interpreter Pythona zgłosił błąd składniowy.

Ostatni ukośnik odwrotny przed cudzysłowem powoduje ucieczkę od stałej łańcuchowej, a interpreter Pythona rozważa ' jako pojedynczy znak. Ta sekwencja ucieczki oznacza cudzysłów (') .

Możemy rozwiązać ten problem, korzystając z poniższego fragmentu kodu.

Rozwiązanie:

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

Wyjście:

 String: D:PythonMy_Folder 

Wyjaśnienie:

W powyższym fragmencie kodu użyliśmy metody „\” w stałej łańcuchowej. W rezultacie interpreter Pythona wykonuje ten ciąg bez zgłaszania błędu.