How to un-escape a backslash-escaped string? How to un-escape a backslash-escaped string? python python

How to un-escape a backslash-escaped string?


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


You can use ast.literal_eval which is safe:

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)

Like this:

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


All given answers will break on general Unicode strings. The following works for Python3 in all cases, as far as I can tell:

from codecs import encode, decodesample = u'mon€y\\nröcks'result = decode(encode(sample, 'latin-1', 'backslashreplace'), 'unicode-escape')print(result)

In recent Python versions, this also works without the import:

sample = u'mon€y\\nröcks'result = sample.encode('latin-1', 'backslashreplace').decode('unicode-escape')

As outlined in the comments, you can also use the literal_eval method from the ast module like so:

import astsample = u'mon€y\\nröcks'print(ast.literal_eval(F'"{sample}"'))

Or like this when your string really contains a string literal (including the quotes):

import astsample = u'"mon€y\\nröcks"'print(ast.literal_eval(sample))

However, if you are uncertain whether the input string uses double or single quotes as delimiters, or when you cannot assume it to be properly escaped at all, then literal_eval may raise a SyntaxError while the encode/decode method will still work.