Encodage et décodage d'octets en Python : guide de conversion de chaînes
Les objets Bytes sont couramment rencontrés lors de l'interaction avec des programmes externes ou de la manipulation de données binaires. . Pour travailler efficacement avec eux, une conversion vers et depuis des chaînes peut être nécessaire. Cet article abordera un problème spécifique concernant la conversion d'un objet bytes contenant la sortie d'une commande externe en une chaîne Python normale.
Le problème : convertir des octets en chaîne
Prenons l'exemple suivant de Python 3 :
>>> from subprocess import * >>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0] >>> stdout b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
La variable stdout contient un objet bytes représentant la sortie de 'ls -l' commande. Pour l'imprimer dans un format lisible par l'homme, il doit être converti en chaîne.
Solution : Utilisation de la méthode Decode
La méthode decode() est utilisée pour convertir un objet bytes en chaîne. Il prend un paramètre d'encodage, qui spécifie l'encodage des caractères des données dans l'objet bytes.
>>> stdout_str = stdout.decode('utf-8') >>> print(stdout_str) -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1 -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
Dans cet exemple, nous spécifions 'utf-8' comme encodage car il s'agit d'un encodage courant pour le texte. données. Cependant, il est important d'utiliser le codage correct pour les données spécifiques en cours de traitement.
Remarque :
Bien que la solution ci-dessus fonctionne bien pour convertir des objets octets représentant des données texte , il est important de noter que tous les objets bytes ne contiennent pas de texte. Pour gérer les données binaires, différentes techniques peuvent être nécessaires.
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!