Programming/PYTHON

SyntaxError:(unicode err) 'unicodeescape'

i독 2020. 12. 14. 10:04

이 에러는 Code를 작성할 때는 알고 있지만, 가끔 Setting을 위해 py로 만들어진 config 파일을 수정할 때 간혹 걸린다.

 

python의 string 안에서는 단독으로 "\"를 사용 할 수 없다.

"\"를 붙이는 순간 python 내부에서는 escape character로 인식한다.

 

[\"] => ["] 로 변환이 되기에 흔히 string 안에 따옴표를 넣고 싶을 때나 줄바꿈이 필요로 할 때 사용하곤 한다.

 

config.py 에서 route setting을 할 때 가끔 윈도우 탐색기 주소창에 있는 경로를 그대로 복사하고 넣을 때가 있다.

이때 윈도우 경로 주소는 역슬러쉬(\)를 포함하고 있기에 위 주소를 python code에 넣어버리면

[\P, \W, \C] 등의 알 수 없는 이스케이프 문자를 포함시켜버리기에 구문 오류가 발생한다.

 

이를 방지하기 위해선 몇가지 방법이 있는데 내가 가장 흔히 사용하는 방법은 2가지가 있다.

 

 1  Escape character 사용

 

 > 쓰라고 만들어 놓은 규칙이니, \를 표현할 수 있는 escape character인 \\ 를 사용한다.

 ex) dir = 'C:\\Program Files'

 > 주로 code 내부에서 이 방법으로 작성한다.

경로를 역슬러쉬(\) 대신 슬러쉬(/)을 사용해도 되긴하나, 왠만하면 보편적인 방법으로 통일하는 편이 좋다.
소스 내부에서 고정되는 root 경로같은 경우는 상관이 없지만, 유동적으로 경로의 주소가 변하는 경우에는 escape character를 보편적으로 선호하는 것 같다.

 

 2  Row string 사용 

 

 > 문자열 앞에 r이나 R을 입력하면 raw string으로 인식된다. 이는 escape character를 사용하지 않고 원시적인 문자열로 인식한다.

 ex) dir = r'C:\Program Files'

 > config 같은 것을 수정할 때 해당 방법을 사용한다. 직관적인 경로를 넣어야 나중에 편집할 때 편하다.

 

자세한 내용은 Python document에서 확인할 수 있다. r정도의 키워드는 정말 기본적인 Syntax라서 크게 상관하지 않아도 되긴하다. 

 

2. Lexical analysis — Python 2.7.18 documentation

2. Lexical analysis A Python program is read by a parser. Input to the parser is a stream of tokens, generated by the lexical analyzer. This chapter describes how the lexical analyzer breaks a file into tokens. Python uses the 7-bit ASCII character set for

docs.python.org

 

'Programming > PYTHON' 카테고리의 다른 글

Python editor - SublimeText3 config  (0) 2017.08.09
Python 3.6 install (windows, linux yum install)  (0) 2017.08.09