J'ai lu dans une pièce jointe XML avec
bytes_string=part.get_payload(decode=False)
La charge utile est fournie sous forme de chaîne d'octets, comme le suggère mon nom de variable.
J'essaie d'utiliser l'approche Python 3 recommandée pour transformer cette chaîne en une chaîne utilisable que je peux manipuler.
L'exemple montre:
str(b'abc','utf-8')
Comment puis-je appliquer l' b
argument de mot clé (octets) à ma variable bytes_string
et utiliser l'approche recommandée?
La façon dont j'ai essayé ne fonctionne pas:
str(bbytes_string, 'utf-8')
string
python-3.x
type-conversion
bytestring
DjangoTango
la source
la source
str(bytes_string, 'utf-8', 'ignore')
Les erreurs peuvent être ignorées en passant le troisième paramètre.bytes_string
, pourquoi voudriez-vous ignorer les erreurs?UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
pour la chaîne d'octets suivanteb'\xbf\x8cd\xba\x7f\xe0\xf0\xb8t\xfe.TaFJ\xad\x100\x07p\xa0\x1f90\xb7P\x8eP\x90\x06)0'
@TobySpeightAppelez
decode()
unebytes
instance pour obtenir le texte qu'elle encode.la source
ACTUALISÉ:
Comme votre code peut avoir des caractères non reconnaissables à
'utf-8'
encoder, il est préférable d'utiliser uniquement str sans paramètres supplémentaires:si vous ajoutez un
'utf-8'
paramètre, à ces octets spécifiques, vous devriez recevoir une erreur.Comme le dit la norme PYTHON 3,
text
serait maintenant dans utf-8 sans souci.la source
b
en premier, alors j'ai mis à jour la réponsePour adresser ce commentaire dans le post de @ uname01 et l'OP, ignorez les erreurs:
Code
Détails
À partir de la documentation , voici d'autres exemples utilisant le même
errors
paramètre:la source