はじめに
Python3にて、全角文字を使えない箇所に対して、Unicodeエスケープをした「文字列」を設定したかったのですが、ぱっと調べて出てこなかったのでメモしておきます。
文字列をUnicodeエスケープ文字列に変換する
unicode-escapeでエンコードしたものをasciiでデコードします。
text = 'Unicodeエスケープ'
print(text.encode('unicode-escape').decode('ascii'))
出力
Unicode\u30a8\u30b9\u30b1\u30fc\u30d7
ちなみに、エンコーディングをunicode-escapeではなく、asciiにしてもできます。その場合は、さらにbackslashreplaceを指定する必要があります。
text = 'Unicodeエスケープ'
print(text.encode('ascii', 'backslashreplace').decode('ascii'))
出力
Unicode\u30a8\u30b9\u30b1\u30fc\u30d7
Unicodeエスケープされた文字列を普通の文字列に変換する
asciiでエンコードしたものをunicode-escapeでデコードします。
text = 'Unicode\\u30a8\\u30b9\\u30b1\\u30fc\\u30d7'
print(text.encode('ascii').decode('unicode-escape'))
出力
Unicodeエスケープ
ちなみに、こちらの方はbackslashreplaceは使えません。
まとめ
対称性を考えると、backslashreplaceではなくunicode-escapeを使った方が分かりやすいですね。