8

I've checked this solution but it doesn't work in python3.

I've an escaped string of this kind: str = "Hello\\nWorld" and I want to obtain the same string unescaped: str_out = Hello\nWorld

I tried with this without succes: AttributeError: 'str' object has no attribute 'decode'

Here my sample code:

str = "Hello\\nWorld"
str.decode('unicode_escape')
Timmy
  • 693
  • 2
  • 8
  • 26

1 Answers1

18

decode applies to bytes, which you can create by encoding from your string.

I would encode (using default) then decode with unicode-escape

>>> s = "Hello\\nWorld"
>>> s.encode()
b'Hello\\nWorld'
>>> s.encode().decode("unicode-escape")
'Hello\nWorld'
>>> print(s.encode().decode("unicode-escape"))
Hello
World
>>> 
Jean-François Fabre
  • 137,073
  • 23
  • 153
  • 219
  • This doesn't cut it when your string contains non-ascii characters. Encoding to `latin1` in the interim seems to work though, see https://stackoverflow.com/a/58829514/791713. – Niklas R Mar 09 '23 at 23:25