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

Python SyntaxError: 줄 연속 문자 뒤의 예상치 못한 문자 오류 해결 방법

파이썬의 줄 연속 문자(line continuation character)는 코드 한 줄을 다음 줄로 이어서 작성할 수 있게 해주는 기능입니다. 단, 줄 연속 문자 뒤에는 어떠한 값도 올 수 없습니다.

줄 연속 문자 뒤에 문자나 구문을 지정하면 SyntaxError: unexpected character after line continuation character 오류가 발생합니다.

이 글에서는 해당 오류의 의미와 발생 원인을 설명하고, 실제 예시 두 가지를 통해 코드에서 이 오류를 해결하는 방법을 알아보겠습니다.

SyntaxError: unexpected character after line continuation character란?

줄 연속 문자를 사용하면 아주 긴 문자열을 여러 줄의 코드로 나누어 작성할 수 있습니다. 이 문자는 코드의 가독성을 높여주기 때문에 매우 유용합니다. 파이썬에서 줄 연속 문자는 백슬래시(\)입니다.

길이가 매우 긴 코드 한 줄을 따라가기는 어렵지만, 여러 줄로 나누면 훨씬 읽기 쉽습니다.

줄 연속 문자는 주로 코드를 나누거나 긴 문자열을 여러 줄에 걸쳐 작성할 때 사용됩니다:

url = "https://careerkarma.com" \
      "/blog/python-syntaxerror-unexpected-character-after" \
      "line-continuation-character"

위처럼 문자열을 세 줄로 나누면 코드를 훨씬 쉽게 읽을 수 있습니다.

이 오류가 발생하는 대표적인 두 가지 상황은 다음과 같습니다:

  • 나눗셈 연산자로 슬래시(/) 대신 백슬래시(\)를 사용한 경우
  • 문자열에 줄바꿈 문자를 추가할 때 따옴표로 묶지 않은 경우

각각의 상황을 하나씩 자세히 살펴보겠습니다.

시나리오 #1: 백슬래시로 나눗셈하기

먼저 사람의 체질량지수(BMI)를 계산하는 프로그램을 작성해 보겠습니다. 시작하려면 사용자에게 키와 몸무게를 입력받아야 합니다:

height = input("What is your height? ")
weight = input("What is your weight? ")

다음으로 사용자의 BMI를 계산합니다. BMI를 구하는 공식은 다음과 같습니다:

BMI = kg/m2

여기서 "kg"는 킬로그램 단위의 몸무게, "m2"는 미터 단위 키의 제곱값입니다. 이 공식을 파이썬 코드로 옮기면 다음과 같습니다:

bmi = float(weight) \ (float(height) * 2)
print("Your BMI is: " + str(bmi))

수학 연산을 수행할 수 있도록 "weight"와 "height" 값을 float()으로 부동소수점 숫자로 변환했습니다.

그런 다음 사용자의 BMI를 콘솔에 출력합니다. str() 메서드로 "bmi"를 문자열로 변환하여 메시지와 연결하고, round() 메서드로 소수점 둘째 자리까지 반올림합니다.

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

  File "main.py", line 4
	bmi = float(weight) \ (float(height) * 2)
                                        	^
SyntaxError: unexpected character after line continuation character

오류가 발생했습니다. 그 이유는 나눗셈 연산자 "/" 대신 "\"를 사용했기 때문입니다. 올바른 나눗셈 연산자 "/"를 사용하면 코드를 수정할 수 있습니다:

bmi = float(weight) / (float(height) * 2)
print("Your BMI is: " + str(round(bmi, 2)))

수정한 코드의 실행 결과는 다음과 같습니다:

What is your height? 1.70
What is your weight? 63
Your BMI is: 18.53

코드가 사용자의 BMI를 성공적으로 계산했습니다.

시나리오 #2: 줄바꿈 문자를 잘못 사용한 경우

다음으로 재료 목록을 파일에 저장하는 프로그램을 작성해 보겠습니다. 먼저 쇼트브레드 레시피의 재료 목록을 정의합니다:

ingredients = [
	"150g plain flour",
	"100g butter, chilled an cubed",
	"50g caster sugar"
]

다음으로 재료 목록을 작성할 "shortbread_recipe.txt" 파일을 엽니다:

with open("shortbread_recipe.txt", "w+") as ingredients_file:
	for i in ingredients:
		ingredients_file.write(i + \n)

이 코드는 "ingredients" 변수의 모든 재료를 반복하면서, 각 재료를 파일에 기록한 뒤 파이썬의 줄바꿈 문자("\n")를 추가합니다. 이렇게 하면 각 재료가 새 줄에 표시됩니다.

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

  File "main.py", line 9
	ingredients_file.write(i + \n)
                             	^
SyntaxError: unexpected character after line continuation character

오류가 반환되었습니다. 그 이유는 줄바꿈 문자를 따옴표로 묶지 않았기 때문입니다.

줄바꿈 문자는 특수 문자이지만, 사용할 때는 반드시 따옴표로 묶어야 합니다. 파이썬은 "\"를 줄 연속 문자로 해석하기 때문입니다.

이 오류를 해결하려면 줄바꿈 문자를 큰따옴표로 묶어야 합니다:

with open("shortbread_recipe.txt", "w+") as ingredients_file:
		for i in ingredients:
			 ingredients_file.write(i + "\n")

코드를 실행하면 콘솔에는 아무 값도 출력되지 않으며, "shortbread_recipe.txt"라는 새 파일이 생성됩니다. 파일의 내용은 다음과 같습니다:

150g plain flour
100g butter, chilled an cubed
50g caster sugar

코드가 재료 목록을 "shortbread_recipe.txt" 파일에 성공적으로 저장했습니다.

마치며

SyntaxError: unexpected character after line continuation character 오류는 줄 연속 문자(\) 뒤에 다른 코드나 문자를 추가했을 때 발생합니다.

이 오류를 해결하려면 다음 두 가지를 기억하세요. 첫째, 수학 연산을 수행할 때는 올바른 나눗셈 연산자인 슬래시(/)를 사용해야 합니다. 둘째, 줄바꿈 문자처럼 백슬래시가 포함된 특수 문자를 사용할 때는 반드시 따옴표로 묶어야 합니다.

이제 여러분의 코드에서 이 오류를 직접 해결할 준비가 되었습니다!