In Python 3, come faccio a interpolare una stringa di byte in una stringa regolare e ottenere lo stesso comportamento di Python 2 (vale a dire: ottenere solo i codici di escape senza il prefisso b
o il doppio backslash)?Python 3: Come si ottiene una rappresentazione letterale di stringa di una stringa di byte?
es .:
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'"
Si noti come con Python 3, ottengo il prefisso b
nella mia uscita e doppia sottolineatura. Il risultato che vorrei ottenere è il risultato che ottengo in Python 2.
Nel vostro Python 3 esempio, si sono interpolando in una stringa Unicode, non una stringa di byte, come si sta facendo in Python 2. –