Python - Unicodeエスケープされた文字列を通常の文字列に戻す

s = r'\u307b\u3052'
print(type(s))
# <class 'str'>

s = s.encode()
print(type(s))
# <class 'bytes'>

s = s.decode('unicode-escape')
print(type(s))
# <class 'str'>

print(s)
# ほげ

print(r'\u307b\u3052'.encode().decode('unicode-escape'))
# ほげ

decode()メソッドは文字列クラスに定義されていないためUnicodeエスケープされた文字列を通常の文字列に戻すためにはencode()でバイト列にエンコードしてからdecode()でデコードする。

または組み込みのcodecsモジュールを使って

import codecs

s = r'\u307b\u3052'
s = codecs.decode(s, 'unicode-escape')
print(type(s))
# <class 'str'>

print(s)
# ほげ

環境

参考