W Pythonie 3, w jaki sposób interpolować ciąg bajtów w zwykły ciąg i uzyskać takie samo zachowanie, jak w Pythonie 2 (tj. Uzyskać tylko kody escape bez prefiksu b
lub podwójnych ukośników)?Python 3: Jak uzyskać ciąg literału reprezentujący ciąg bajtów?
np .:
Python 2.7:
>>> x = u'\u041c\u0438\u0440'.encode('utf-8')
>>> str(x)
'\xd0\x9c\xd0\xb8\xd1\x80'
>>> 'x = %s' % x
'x = \xd0\x9c\xd0\xb8\xd1\x80'
Python 3.3:
>>> x = u'\u041c\u0438\u0440'.encode('utf-8')
>>> str(x)
"b'\\xd0\\x9c\\xd0\\xb8\\xd1\\x80'"
>>> 'x = %s' % x
"x = b'\\xd0\\x9c\\xd0\\xb8\\xd1\\x80'"
Uwaga jak w Pythonie 3, pojawia się przedrostek b
w moim wyjściu i podwójne podkreślenia. Wynik że chciałbym dostać wynika, że mam w Pythonie 2.
W przykładzie Python 3, jesteś interpolację na ciąg znaków Unicode, a nie ciąg bajtów jak robisz w Pythonie 2. –