파이썬에서 백슬래시(\)로 이스케이프된 문자열을 원래 형태로 되돌리는(이스케이프 해제) 방법은 크게 두 가지가 있습니다. 각각의 사용법과 주의할 점을 살펴보겠습니다.
1. ast.literal_eval 사용하기
첫 번째 방법은 ast.literal_eval 함수를 사용해 문자열을 그대로 평가하는 것입니다. 이때 중요한 점은 대상 문자열을 한 겹 더 따옴표로 감싸야 한다는 것입니다. 즉, 이스케이프 시퀀스가 포함된 문자열 자체가 하나의 문자열 리터럴처럼 취급되어야 하기 때문입니다.
>>> import ast
>>> a = '"Hello,\\nworld"'
>>> print(ast.literal_eval(a))
Hello,
world
위 예제에서 변수 a는 이중 따옴표로 둘러싸인 문자열을 다시 작은따옴표로 감싸고 있습니다. literal_eval이 이 문자열을 안전하게 평가하면서 \\n이 실제 줄바꿈 문자로 변환되어 출력됩니다.
2. decode('string_escape') 사용하기 (Python 2)
두 번째 방법은 문자열 클래스에서 제공하는 decode('string_escape') 메서드를 활용하는 것입니다.
>>> print "Hello,\\nworld".decode('string_escape')
Hello,
world
이 방식은 백슬래시 이스케이프 시퀀스(\\n, \\t, \\x41 등)을 해당하는 실제 문자로 변환해 줍니다.
참고: Python 3 환경이라면
'string_escape' 코덱은 Python 2 전용이며, Python 3에서는 제거되었습니다. Python 3에서 동일한 기능이 필요하다면 codecs 모듈의 unicode_escape 인코딩을 사용할 수 있습니다.
>>> import codecs
>>> print(codecs.decode(b'Hello,\\nworld', 'unicode_escape'))
Hello,
world
Python 3에서는 바이트(bytes) 타입에만 적용할 수 있다는 점에 유의하세요. 상황에 맞는 방법을 선택하면 이스케이프된 문자열을 손쉽게 원래대로 복원할 수 있습니다.