Я прочитал вложение электронной почты в формате XML с
bytes_string=part.get_payload(decode=False)
Полезные данные представлены в виде байтовой строки, как подсказывает имя моей переменной.
Я пытаюсь использовать рекомендуемый подход Python 3, чтобы превратить эту строку в пригодную для использования строку, которой я могу управлять.
Пример показывает:
str(b'abc','utf-8')
Как я могу применить b
аргумент ключевого слова (bytes) к моей переменной bytes_string
и использовать рекомендуемый подход?
То, как я пробовал, не работает:
str(bbytes_string, 'utf-8')
string
python-3.x
type-conversion
bytestring
ДжангоТанго
источник
источник
str(bytes_string, 'utf-8', 'ignore')
Ошибки можно игнорировать, передав третий параметр.bytes_string
, зачем вам игнорировать ошибки?UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
за следующие байты строкиb'\xbf\x8cd\xba\x7f\xe0\xf0\xb8t\xfe.TaFJ\xad\x100\x07p\xa0\x1f90\xb7P\x8eP\x90\x06)0'
@TobySpeightВызов
decode()
наbytes
экземпляр , чтобы получить текст , который он кодирует.источник
ОБНОВЛЕНО:
Поскольку ваш код может содержать нераспознаваемые символы для
'utf-8'
кодирования, лучше использовать просто str без каких-либо дополнительных параметров:если вы добавите
'utf-8'
параметр к этим конкретным байтам, вы должны получить ошибку.Как говорится в стандарте PYTHON 3,
text
теперь без проблем будет в utf-8.источник
b
сначала в тексте есть текст , то я обновил ответЧтобы ответить на этот комментарий в сообщении @ uname01 и OP, игнорируйте ошибки:
Код
подробности
В документации приведены другие примеры использования того же
errors
параметра:источник