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 el nombre de mi 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 b
argumento de palabra clave (bytes) a mi variable bytes_string
y usar el enfoque recomendado?
La forma en que lo intenté no funciona:
str(bbytes_string, 'utf-8')
string
python-3.x
type-conversion
bytestring
DjangoTango
fuente
fuente
str(bytes_string, 'utf-8', 'ignore')
Los errores se pueden ignorar pasando el tercer parámetro.bytes_string
ello, ¿por qué querría ignorar los errores?UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
para la siguiente cadena de bytesb'\xbf\x8cd\xba\x7f\xe0\xf0\xb8t\xfe.TaFJ\xad\x100\x07p\xa0\x1f90\xb7P\x8eP\x90\x06)0'
@TobySpeightLlame
decode()
a unabytes
instancia para obtener el texto que codifica.fuente
ACTUALIZADO:
Como su código puede tener caracteres irreconocibles para
'utf-8'
codificar, es mejor usar solo str sin ningún parámetro adicional:si agrega un
'utf-8'
parámetro, a estos bytes específicos, debería recibir un error.Como dice el estándar PYTHON 3, ahora
text
estaría en utf-8 sin ninguna preocupación.fuente
b
, entonces actualicé la respuestaPara abordar este comentario en la publicación de @ uname01 y el OP, ignore los errores:
Código
Detalles
De los documentos , aquí hay más ejemplos que usan el mismo
errors
parámetro:fuente