Par exemple, j'ai une chaîne comme celle-ci (valeur de retour de subprocess.check_output
):
>>> b'a string'
b'a string'
Quoi que je lui fasse, il est toujours imprimé avec l'ennuyeux b'
avant la chaîne:
>>> print(b'a string')
b'a string'
>>> print(str(b'a string'))
b'a string'
Quelqu'un at-il des idées sur la façon de l'utiliser comme une chaîne normale ou de la convertir en une chaîne normale?
python
string
python-3.x
binary
Hanfei Sun
la source
la source
Réponses:
Décode-le.
Pour obtenir des octets de la chaîne, codez-la.
la source
ascii
parce que la chaîne donnée a été faite avec des lettres ascii. Vous n'avez pas besoin de spécifier l'encodage si l'encodage estutf-8
(par défaut dans Python 3.x selonstr.encode
,bytes.decode
doc-string)import locale
ensuiteos_encoding = locale.getpreferredencoding()
. De cette façon, nous pouvons décoder en utilisantmy_b_string.decode(os_encoding)
sys.getfilesystemencoding()
,sys.stdin.encoding
,sys.stdout.encoding
. À mon humble avis, l'utilisation de ces détections automatiques de codage pourrait résoudre le problème car le sous-programme (OP utilise un sous-processus) pourrait être écrit d'une autre manière pour déterminer le codage (ou même codé en dur). Merci pour vos commentaires, de toute façon.sys.getfilesystemencoding()
renvoie le nom de l'encodage utilisé pour convertir entre les noms de fichiers Unicode et les noms de fichiers octets et dépend fortement du système d'exploitation que vous utilisez. AFAIK, cette fonction est utilisée pour convertir la représentation préférée du système. Cela signifie qu'il ne déduira pas la codification utilisée par la console qui peut être obtenue en utilisant lalocale.getpreferredencoding()
fonction susmentionnéeSi la réponse de falsetru ne fonctionne pas, vous pouvez également essayer:
la source
Veuillez consulter le document officiel
encode()
et ladecode()
documentation de lacodecs
bibliothèque.utf-8
est l'encodage par défaut pour les fonctions, mais il existe plusieurs encodages standard en Python 3, commelatin_1
ouutf_32
.la source