与えられたすべての答えは、一般的なUnicode文字列で壊れます。以下は、私が知る限り、すべての場合においてPython3で機能します。
from codecs import encode, decode
sample = u'mon€y\\nröcks'
result = decode(encode(sample, 'latin-1', 'backslashreplace'), 'unicode-escape')
print(result)
コメントで概説されているように、次のようにモジュールliteral_eval
からメソッドを使用することもできますast
:
import ast
sample = u'mon€y\\nröcks'
print(ast.literal_eval(F'"{sample}"'))
または、文字列に文字列リテラル(引用符を含む)が実際に含まれている場合は、次のようになります。
import ast
sample = u'"mon€y\\nröcks"'
print(ast.literal_eval(sample))
ただし、入力文字列が区切り文字として二重引用符または単一引用符のどちらを使用しているかが不明な場合、または文字列が適切にエスケープされていると想定できない場合は、encode / decodeメソッドが引き続き機能する間にliteral_eval
a が発生することがありますSyntaxError
。