2015-06-25 3 views
44

Я прочитал в виде вложения электронной почты XML сКак преобразовать переменную байтовой строки Python 3 в обычную строку?

bytes_string=part.get_payload(decode=False) 

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

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

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

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

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

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

str(bbytes_string, 'utf-8') 

ответ

90

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

str(bytes_string, 'utf-8') 

, так как тип bytes_string является bytes, так же, как тип b'abc'.

31

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

str = bytes.decode() 
+3

UnicodeDecodeError: кодек 'utf-8' не может декодировать байт 0xf6 в позиции 230: недействительный стартовый байт –

+1

@JuhaUntinen ваша кодировка, вероятно, не utf-8. –

+0

Как фильтровать (пропускать) символы, отличные от UTF8, из массива? –

4

ОБНОВЛЕНО:

TO NOT HAVE ANY b and quotes at first and end

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

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

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

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

+0

результат «b» \\ x02 - \\ xdfI #) '', который, вероятно, не тот, который ему нужен –

+0

@GlenThompson это просто пример нежелательных условий, которые могут произойти. Я использую этот текст специально. Если вы имеете в виду, что текст имеет 'b' в первом из них, то я обновил ответ –

+0

, так что спасибо, что я ищу способ для удаления b '' строки, содержащей символ ansi без кодирования и потери символов, i 'm new в python и не знаю, чем я могу уменьшить массив с начала и начала с использованием индексов: O –

Смежные вопросы