Подтвердить что ты не робот

Как преобразовать переменную байтов Python 3 в регулярную строку?

Я прочитал в приложении электронной почты XML с помощью

bytes_string=part.get_payload(decode=False)

Полезная нагрузка поступает как строка байтов, как предлагает мое имя переменной.

Я пытаюсь использовать рекомендуемый подход Python 3, чтобы превратить эту строку в полезную строку, с которой я могу манипулировать.

В этом примере показано:

str(b'abc','utf-8')

Как я могу применить аргумент ключевого слова b (bytes) к моей переменной bytes_string и использовать рекомендуемый подход?

То, как я пытался, не работает:

str(bbytes_string,'utf-8')
4b9b3361

Ответ 1

У вас было почти прямо в последней строке. Вы хотите

str(bytes_string,'utf-8')

потому что тип bytes_string равен bytes, то же, что и тип b'abc'.

Ответ 2

Вызвать decode() в экземпляре bytes, чтобы получить текст, который он кодирует.

str = bytes.decode()

Ответ 3

ОБНОВЛЕНО:

НЕ ИМЕЕТ ЛЮБОЕ b и кавычки в начале и конце

Поскольку ваш код может содержать неузнаваемый символ 'utf-8', лучше использовать только str без каких-либо дополнительных параметров:

bad_bytes = b'\x02-\xdfI#)'
text = str( bad_bytes )[2:-1]

если вы добавили параметр 'utf-8', к этим конкретным байтам, вы должны получить сообщение об ошибке.

Как говорит стандарт PYTHON 3, text теперь будет в utf-8 без каких-либо проблем.