Maison >développement back-end >Tutoriel Python >Comment convertir un objet Bytes en chaîne dans Python 3 ?

Comment convertir un objet Bytes en chaîne dans Python 3 ?

DDD
DDDoriginal
2024-12-26 02:49:11618parcourir

How Do I Convert a Bytes Object to a String in Python 3?

Conversion d'octets en chaîne dans Python 3

Problème :

Vous avez capturé le sortie standard d'un programme externe dans un objet bytes et doit l'afficher sous forme de chaîne. Par exemple :

import subprocess
p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
stdout, _ = p.communicate()

Cela donnera un objet bytes comme :

b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n' 

Votre objectif est de convertir cet objet bytes en une chaîne Python standard.

Solution :

Pour convertir un objet bytes stdout en chaîne dans Python 3, utilisez le méthode decode(). Cette méthode prend l’encodage de l’objet bytes comme argument. Voici comment procéder :

decoded_stdout = stdout.decode("encoding")

Choisir l'encodage :

Le paramètre encoding spécifie le jeu de caractères utilisé pour décoder les octets. Dans l’exemple donné, UTF-8 est considéré comme le codage par défaut. Cependant, il est important d'utiliser le codage réel de vos données.

Si vous ne connaissez pas le codage, vous pouvez essayer d'utiliser "utf-8". Alternativement, vous pouvez utiliser une bibliothèque comme chardet pour détecter automatiquement l'encodage.

Exemple :

Utilisation d'UTF-8 comme encodage supposé :

decoded_stdout = stdout.decode("utf-8")

Vous pouvez maintenant imprimer votre chaîne décodée :

print(decoded_stdout) 
# Output:
# -rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn