print example convertir bytes string python-3.x type-conversion bytestring

string - example - ¿Cómo convierto una variable de cadena de bytes de Python 3 en una cadena normal?



decode bytearray python (4)

¿Cómo filtrar (omitir) caracteres no UTF8 de la matriz?

Para abordar este comentario en la publicación de @ uname01 y el OP, ignore los errores:

Código

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

Detalles

De los docs , aquí hay más ejemplos que usan el mismo parámetro de errors :

>>> b''/x80abc''.decode("utf-8", "replace") ''/ufffdabc'' >>> b''/x80abc''.decode("utf-8", "backslashreplace") ''//x80abc'' >>> b''/x80abc''.decode("utf-8", "strict") Traceback (most recent call last): ... UnicodeDecodeError: ''utf-8'' codec can''t decode byte 0x80 in position 0: invalid start byte

El argumento de errores especifica la respuesta cuando la cadena de entrada no se puede convertir de acuerdo con las reglas de codificación. Los valores legales para este argumento son ''strict'' (generar una excepción UnicodeDecodeError ), ''replace'' (usar U+FFFD , REPLACEMENT CHARACTER ) o ''ignore'' (simplemente dejar el carácter fuera del resultado de Unicode).

He leído en un archivo adjunto de correo electrónico XML con

bytes_string=part.get_payload(decode=False)

La carga útil viene como una cadena de bytes, como sugiere mi nombre de variable.

Estoy tratando de usar el enfoque recomendado de Python 3 para convertir esta cadena en una cadena utilizable que pueda manipular.

El ejemplo muestra:

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

¿Cómo puedo aplicar el argumento de palabra clave b (bytes) a mi variable bytes_string y usar el enfoque recomendado?

La forma en que lo intenté no funciona:

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


Llame a decode() en una instancia de bytes para obtener el texto que codifica.

str = bytes.decode()


Lo tenías casi justo en la última línea. Usted quiere

str(bytes_string, ''utf-8'')

porque el tipo de bytes_string es bytes , lo mismo que el tipo de b''abc'' .


ACTUALIZADO:

NO TENER NINGUNA b citas al principio y al final

Como su código puede tener caracteres irreconocibles para ''utf-8'' codificación ''utf-8'' , es mejor usar solo str sin ningún parámetro adicional:

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

si agrega ''utf-8'' parámetro ''utf-8'' , a estos bytes específicos, debería recibir un error.

Como dice el estándar PYTHON 3, el text estaría en utf-8 ahora sin ninguna preocupación.