149 votes

Imprimer sans le préfixe 'b' pour les octets en Python 3

Comment imprimer un bytes sans la chaîne b' dans Python 3 ?

>>> print(b'hello')
b'hello'

146voto

sdaau Points 6262

Utilice decode :

>>> print(b'hello'.decode())
hello

27voto

J.F. Sebastian Points 102961

Si les octets utilisent déjà un codage de caractères approprié, vous pouvez les imprimer directement :

sys.stdout.buffer.write(data)

o

nwritten = os.write(sys.stdout.fileno(), data)  # NOTE: it may write less than len(data) bytes

21voto

Frank Points 639

Si les données sont dans un format compatible UTF-8, vous pouvez convertir les octets en une chaîne de caractères.

>>> print(str(b"hello", "utf-8"))
hello

Optionnellement, convertir d'abord en hexagone si les données ne sont pas compatibles avec UTF-8 (par exemple, si les données sont des octets bruts).

>>> from binascii import hexlify
>>> print(hexlify(b"\x13\x37"))
b'1337'
>>> print(str(hexlify(b"\x13\x37"), "utf-8"))
1337

>>> from codecs import encode  # alternative
>>> print(str(encode(b"\x13\x37", "hex"), "utf-8"))
1337

19voto

muntoo Points 4905

Selon la source de bytes.__repr__ le b'' est intégré dans la méthode.

Une solution de contournement consiste à couper manuellement les éléments suivants b'' à partir du résultat repr() :

>>> x = b'\x01\x02\x03\x04'

>>> print(repr(x))
b'\x01\x02\x03\x04'

>>> print(repr(x)[2:-1])
\x01\x02\x03\x04

8voto

hassanzadeh.sd Points 1623

Pour montrer ou imprimer :

<byte_object>.decode("utf-8")

Pour coder ou sauvegarder :

<str_object>.encode('utf-8')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X