Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python SyntaxError: '문자열 리터럴을 스캔하는 동안 EOL' 오류 완벽 해결 가이드

숙련된 개발자라도 코딩 중에는 구문 오류를 자주 만나게 됩니다. 프로그래밍 언어는 규칙이 매우 많아서 사소한 오타 하나만으로도 오류가 발생할 수 있기 때문입니다.

만약 "syntaxerror: EOL while scanning string literal" 오류를 마주했다면 걱정하지 않으셔도 됩니다. 이 글에서는 이 오류의 의미와 해결 방법을 자세히 설명하고, 몇 가지 예시 시나리오를 통해 원인과 해결책을 쉽게 파악하실 수 있도록 안내해 드립니다.

문제 개요: syntaxerror: EOL while scanning string literal

구문(syntax)은 프로그래밍 언어의 문법과 같습니다. 영어에 문장 부호와 철자 규칙이 있는 것처럼, 프로그래밍 언어에도 이와 유사한 규칙이 존재합니다.

먼저 오류 메시지를 살펴보겠습니다:

syntaxerror: EOL while scanning string literal

SyntaxError라는 메시지는 Python의 구문 규칙을 제대로 따르지 않았다는 의미입니다.

오류 설명을 보면, Python이 한 줄의 코드 끝에서 특정 문자가 나타나기를 기대했지만 찾지 못했다는 뜻입니다. 예를 들어, 문자열을 열어놓은 상태에서 그 줄이 끝나기 전에 문자열을 닫는 따옴표(")가 나타나기를 기다리는 경우가 여기에 해당합니다.

구문 오류가 발생하면 Python은 프로그램 실행을 즉시 중단합니다. Python 인터프리터가 나머지 코드를 읽기 전에 먼저 문제를 수정해야 하기 때문입니다.

이 오류는 주로 다음과 같은 원인으로 발생합니다:

  • 잘못된 구문으로 여러 줄에 걸친 문자열 작성
  • 따옴표 누락
  • 따옴표 불일치

예시 1: 여러 줄 문자열(Multi-line Strings)

Python에서는 문자열이 여러 줄에 걸쳐 있을 수 있습니다. 다만 여러 줄 문자열의 구문은 일반적인 문자열과 다릅니다. 여러 줄 문자열은 반드시 삼중 따옴표(triple quotes), 즉 따옴표 세 개로 작성해야 합니다.

여러 줄 문자열의 예를 살펴보겠습니다:

def welcome_hero():
	message = "Welcome, Hero!
You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."
	print(message)

welcome_hero()

welcome_hero()라는 함수를 정의했습니다. 이 함수는 콘솔에 메시지를 출력하며, 해당 메시지는 "message" 변수에 할당됩니다.

코드를 실행해 보겠습니다:

File "main.py", line 2
	message = "Welcome, Hero!
                         	^
SyntaxError: EOL while scanning string literal

오류가 반환되었습니다. 그 이유는 작은따옴표나 큰따옴표 하나로 감싼 문자열은 여러 줄에 걸칠 수 없기 때문입니다. 이 문제를 해결하려면 문자열을 큰따옴표 또는 작은따옴표 세 개로 감싸야 합니다. 이 문자들 사이에 있는 모든 텍스트는 문자열의 일부가 됩니다:

message = """Welcome, Hero!
You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."""

수정한 코드를 다시 실행하면 다음과 같은 결과가 출력됩니다:

Welcome, Hero!
You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman.

성공입니다! 코드가 오류 없이 메시지를 정상적으로 출력했습니다.

예시 2: 따옴표 누락

문자열 내용을 선언한 후에는 반드시 문자열을 닫아야 합니다. 그렇지 않으면 Python은 구문 오류를 반환합니다. 닫히지 않은 문자열의 예를 살펴보겠습니다:

def welcome_hero():
	message = "Welcome, Hero!
	print(message)

welcome_hero()

코드를 실행해 보겠습니다:

File "main.py", line 2
	message = "Welcome, Hero!
                         	^
SyntaxError: EOL while scanning string literal

문자열을 닫는 것을 잊었습니다. "message" 변수를 선언하는 코드 줄을 보면 문자열을 닫는 기호가 없습니다.

이 오류는 문자열을 열 때 사용한 동일한 종류의 따옴표로 문자열을 닫으면 해결할 수 있습니다.

def welcome_hero():
	message = "Welcome, Hero!"
	print(message)

welcome_hero()

다시 코드를 실행해 보겠습니다:

Welcome, Hero!

코드가 성공적으로 실행되었습니다.

예시 3: 따옴표 불일치

문자열을 열 때 사용한 따옴표의 종류와 닫을 때 사용하는 따옴표의 종류는 반드시 같아야 합니다.

문자열을 열고 닫을 때 서로 다른 종류의 따옴표를 사용하면 구문 오류가 발생합니다. 작은따옴표(')로 문자열을 열고 큰따옴표(")로 닫는 프로그램의 예를 살펴보겠습니다:

def welcome_hero():
	message = 'Welcome, Hero!"
	print(message)

welcome_hero()

실행 결과는 다음과 같습니다:

File "main.py", line 2
	message = 'Welcome, Hero!"
                          	^
SyntaxError: EOL while scanning string literal

이 문제는 따옴표를 일치시키면 간단히 해결됩니다. 첫 번째 따옴표를 큰따옴표(")로 변경해 보겠습니다:

def welcome_hero():
	message = "Welcome, Hero!"
	print(message)

welcome_hero()

이제 코드가 성공적으로 실행되며 "Welcome, Hero!"가 정상적으로 출력됩니다.

마무리

"syntaxerror: EOL while scanning string literal" 오류는 모든 Python 개발자가 한 번쯤 겪는 흔한 오류입니다. 이 오류는 다음과 같은 경우에 발생합니다:

  • 문자열을 닫는 것을 잊었을 때
  • 잘못된 기호로 문자열을 닫았을 때
  • 여러 줄 문자열을 삼중 따옴표 대신 하나의 따옴표로 선언했을 때

이 오류를 해결하려면 위 조건에 해당하는 부분이 있는지 코드를 꼼꼼히 확인한 후, 필요한 수정을 적용하면 됩니다. 이제 Python 전문가처럼 이 오류를 손쉽게 해결할 준비가 되셨습니다!