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


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

bytes_string=part.get_payload(decode=False)

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

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

пример показывает:

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

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

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

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

4 ответа:

у вас это почти в последней строке. Ты хочешь

str(bytes_string, 'utf-8')

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

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

str = bytes.decode()

обновление:

ЧТОБЫ НЕ БЫЛО НИКАКИХ b и кавычки сначала и в конце

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

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

если добавить

как фильтровать (пропускать) не-UTF8 charachers из массива?

чтобы обратиться к этому комментарию в сообщении @uname01 и OP, игнорируйте ошибки:

код

>>> b'\x80abc'.decode("utf-8", errors="ignore")
'abc'

подробности

С docs, вот еще примеры использования того же