우리가 알고 있듯이 Python과 같은 프로그래밍 언어는 해석된 언어입니다. 이는 본질적으로 전체 프로그램을 저수준 코드로 완전히 변경하는 것이 아니라 모든 코드 블록이나 줄이 하나씩 처리된다는 것을 의미합니다.
Python 인터프리터가 코드 줄을 스캔하고 예외적이지 않은 것을 발견할 때마다 구문 오류라는 오류가 발생합니다. 일반적으로 대괄호 누락, 끝 따옴표 누락 및 기타 구문의 근본적인 이상으로 인해 오류가 발생합니다.
다음 튜토리얼에서는 문자열 리터럴을 스캔하려고 할 때 일반적으로 발생하는 EOL이라고 알려진 Python의 구문 오류 중 하나를 발견할 것입니다.
EOL의 의미 이해
문제를 해결하기 전에 EOL의 의미를 효과적으로 이해해야 합니다. EOL은 'End of Line'의 약자입니다. EOL 오류는 Python 인터프리터가 문자열 리터럴을 스캔하는 동안 줄 끝에 도달했음을 나타냅니다.
상수라고도 하는 문자열 리터럴은 작은따옴표 또는 큰따옴표로 묶어야 합니다. 스캔을 시도할 때 '줄 끝'에 도달한다는 것은 문자열의 마지막 문자에 도달했지만 끝 따옴표를 만나지 않았다는 의미입니다.
EOL 오류가 어떻게 발생하는지 보여주는 기본 예를 살펴보겠습니다.
예:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
산출:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal
설명:
위의 코드 조각에서는 문자열 리터럴을 정의했습니다. 그러나 문자열 끝에 있는 따옴표를 놓쳤습니다. 구문 오류 사용자를 위해 해당 문자열을 인쇄하는 동안 EOL을 호출했습니다.
출력 섹션에서 문자열의 마지막 문자를 가리키는 작은 화살표를 볼 수 있는데, 이는 프로그램이 문의 해당 부분을 구문 분석하려고 할 때 오류가 발생했음을 나타냅니다.
이제 문제를 이해했으므로 Python 코드를 실행하는 동안 이 오류가 나타날 수 있는 몇 가지 사례를 이해하겠습니다.
'구문 오류: 문자열 리터럴을 스캔하는 동안 EOL'을 수정합니다.
Python 프로그램을 작업하는 동안 네 가지 주요 상황에서 이 오류가 발생할 수 있습니다. 이러한 네 가지 주요 상황은 다음과 같습니다.
- 끝 따옴표가 누락되었습니다.
- 잘못된 끝 따옴표 사용
- 여러 줄로 늘어나는 문자열 상수
- 끝 따옴표 앞에 백슬래시 사용
이러한 각 상황을 이해하고 문제를 해결해 보도록 하겠습니다.
끝 따옴표가 누락되었습니다.
이전 코드 조각에서 설명한 것처럼 Python 인터프리터는 문자열 리터럴의 끝에 도달하고 따옴표가 누락된 것을 발견할 때마다 구문 오류를 발생시킵니다.
예:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
설명:
리터럴 문자열 끝에 있는 따옴표가 누락되어 구문 오류를 정당화하는 것을 볼 수 있습니다. 모든 언어에는 구문과 관련된 몇 가지 기본 규칙이 있으며 이를 위반하면 오류가 발생합니다.
이제 위 문제에 대한 해결책으로 다음 구문을 고려해 보겠습니다.
해결책:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
산출:
String: This is my string literal, and it is broken...
설명:
위의 코드 조각에서 리터럴 문자열 끝에 따옴표가 포함되어 있음을 확인할 수 있습니다. 결과적으로 구문 오류가 발생하지 않고 사용자에게 문자열이 성공적으로 인쇄됩니다.
잘못된 끝 따옴표 사용
우리는 활용할 수 있습니다 ' ' 게다가 ' ' Python에서 특정 문자열 상수를 묶기 위해. 그러나 프로그래머는 문자열 값 끝에 잘못된 따옴표를 사용하는 경우가 많습니다. 이러한 상황으로 인해 프로그램은 EOL 측면에서 구문 오류를 발생시킵니다.
다음 예에서 그러한 상황을 고려해 보겠습니다.
예:
# 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)
산출:
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
설명:
위의 코드 조각에서는 문자열 값 끝에 잘못된 따옴표를 사용하여 구문 오류가 발생했습니다.
다음 코드 조각에 표시된 대로 문자열 끝에 일치하는 따옴표를 사용하면 이러한 문제를 피할 수 있습니다.
해결책:
# 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)
산출:
String: This is my string literal with wrong quotation mark at the end.
설명:
위의 코드 조각에서는 EOL 오류를 방지하는 데 도움이 되도록 문자열 끝에 일치하는 따옴표를 사용했습니다.
여러 줄로 늘어나는 문자열 상수
명령문을 한 줄 이상으로 늘리는 실수를 저지르는 다양한 초보 Python 프로그래머가 있습니다. Python은 C++, Java와 같은 다른 언어와 달리 명령문의 끝으로 새 줄을 고려합니다. ';' 진술의 끝으로.
동일한 문제를 보여주는 예를 고려해 보겠습니다.
문제 예:
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
산출:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
설명:
자바 입력
위의 코드 조각에서 코드가 평범해 보일 수 있음을 확인할 수 있습니다. 그러나 다음 줄이 시작되자마자 Python 인터프리터는 문자열 상수를 묶지 않았기 때문에 구문 오류를 발생시키는 해당 명령문을 종료합니다.
그러나 아래와 같이 다양한 방법을 사용하여 이 문제를 해결할 수 있습니다.
해결 방법 1: ' '을 사용하여 문자열 상수에 새 줄 효과 제공
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
산출:
String: This is my string literal... this is my new line
설명:
위의 코드 조각에는 다음이 포함되었습니다. 'N' 문자열 상수에 새 줄 효과를 제공합니다. 결과적으로 문자열 상수는 명령문을 여러 줄로 나눕니다.
이제 다른 해결책을 고려해 보겠습니다.
해결 방법 2: 삼중 따옴표 ''' 또는 '''를 사용하여 여러 줄 문자열 상수 저장
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
산출:
String: This is my string literal... this is my new line
설명:
위의 코드 조각에서는 삼중 따옴표를 사용했습니다. ''' 여러 줄의 문자열 상수를 저장하기 위해.
끝 따옴표 앞에 백슬래시 사용
백슬래시 '' 문자열을 이스케이프 처리하고 구문 오류가 발생합니다.
다음 예를 고려해 보겠습니다.
예:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
산출:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
설명:
위의 코드 조각에서는 백슬래시를 사용했습니다. '' 폴더의 경로를 서로 분리하기 위해. 그러나 프로그램을 실행하는 동안 Python 인터프리터에서 구문 오류가 발생했습니다.
따옴표 앞의 마지막 백슬래시는 문자열 상수를 이스케이프하며 Python 인터프리터는 다음을 고려합니다. ' 단일 문자로. 이 이스케이프 시퀀스는 따옴표로 변환됩니다. (') .
다음 코드 조각을 사용하여 이 문제를 해결할 수 있습니다.
해결책:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
산출:
String: D:PythonMy_Folder
설명:
위의 코드 조각에서 우리는 '\' 문자열 상수에서. 결과적으로 Python 인터프리터는 오류를 발생시키지 않고 해당 문자열을 실행합니다.