2009-12-11 5 views
65

다른 문자열의 백 슬래시로 이스케이프 된 문자열 인 문자열이 있다고 가정합니다. 파이썬에서 문자열을 이스케이프 (unescape)하는 쉬운 방법이 있습니까? 나는, 예를 들어, 할 수있는 :어떻게 백 슬래시로 이스케이프 된 문자열을 파이썬에서 이스케이프 해제합니까?

>>> escaped_str = '"Hello,\\nworld!"' 
>>> raw_str = eval(escaped_str) 
>>> print raw_str 
Hello, 
world! 
>>> 

을하지만 보안 위험이있는) (평가 후면 (아마도 신뢰할 수없는) 문자열을 전달 포함하는. 문자열을 취하고 보안 함의가없는 문자열을 생성하는 표준 lib에 함수가 있습니까?

당신은 안전하다 ast.literal_eval을 사용할 수 있습니다

답변

111
>>> print '"Hello,\\nworld!"'.decode('string_escape') 
"Hello, 
world!" 
+5

한 오이 내가 SO에서 배우는 모든 멋진 트릭을 사랑 해요! – jathanism

+0

멋진 트릭을하지만 슬프게 나를 위해 완전히 작동하지 않았다 – sleepycal

+2

python 3과 호환되는 무언가가 있습니까? – thejinx0r

18

: 이것처럼

Safely evaluate an expression node or a string containing a Python expression. The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None. (END)

:

>>> import ast 
>>> escaped_str = '"Hello,\\nworld!"' 
>>> print ast.literal_eval(escaped_str) 
Hello, 
world! 
+0

xy 문제가 다시 저를 물었습니다. 이걸 주셔서 감사합니다! – trianta2

+1

문자열에 이스케이프 처리 된 세미콜론이 있으면이 코드가 분리됩니다. – darksky

+1

@darksky ast 라이브러리가 escaped_str 주위에 인용 부호 ('''''''','''''''''''''')를 필요로하는 것에주의 해주세요. 실제로 파이썬 코드로 실행하려고하기 때문에 보안을 강화합니다 (문자열 삽입을 방지합니다) – no1xsyzy

관련 문제