파이썬의 줄 연속 문자(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 오류는 줄 연속 문자(\) 뒤에 다른 코드나 문자를 추가했을 때 발생합니다.
이 오류를 해결하려면 다음 두 가지를 기억하세요. 첫째, 수학 연산을 수행할 때는 올바른 나눗셈 연산자인 슬래시(/)를 사용해야 합니다. 둘째, 줄바꿈 문자처럼 백슬래시가 포함된 특수 문자를 사용할 때는 반드시 따옴표로 묶어야 합니다.
이제 여러분의 코드에서 이 오류를 직접 해결할 준비가 되었습니다!