Преобразование строки байтов в объект байты
Я получаю байты из json которые записаны как строка
s = '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
Как перевести строку в тип байты, чтобы было так
s = b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
Пробовал использовать encode но оно выдает не тот результат
s = '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
print(s)
print(s.encode())
Ответы (2 шт):
Автор решения: insolor
→ Ссылка
Через получение числового кода каждого символа, потом преобразования набора этих кодов в байты:
s = '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
b = bytes(map(ord, s)) # или b = bytes(ord(x) for x in s)
print(b) # b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
Также работает такой вариант:
b = s.encode('latin1')
Автор решения: Dmitry Sokolov
→ Ссылка
>>> s = '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
>>> b = bytes(s, 'raw_unicode_escape')
>>> b
b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
>>> b[0]
208