En Python 3, on peut formater une chaîne comme:
"{0}, {1}, {2}".format(1, 2, 3)
Mais comment formater les octets?
b"{0}, {1}, {2}".format(1, 2, 3)
soulève AttributeError: 'bytes' object has no attribute 'format'
.
S'il n'y a pas de méthode format
pour les octets, comment faire le formatage ou la "réécriture" des octets?
Et à partir de 3,5 %
le formatage fonctionnera également pour bytes
!
https://mail.python.org/pipermail/python-dev/2014-March/133621.html
Une autre façon serait:
"{0}, {1}, {2}".format(1, 2, 3).encode()
Testé sur IPython 1.1.0 & Python 3.2.3
Fait intéressant, .format()
ne semble pas être pris en charge pour les séquences d'octets; comme vous l'avez démontré.
Vous pouvez utiliser .join()
comme suggéré ici: http://bugs.python.org/issue3982
b", ".join([b'1', b'2', b'3'])
Il y a un avantage de vitesse associé à .join()
par rapport à l'utilisation de .format()
montré par le BDFL lui-même: http://bugs.python.org/msg180449
J'ai trouvé que le% a fonctionnait mieux dans Python 3.6.2, il devrait fonctionner à la fois pour b "" et "":
print(b"Some stuff %b. Some other stuff" % my_byte_or_unicode_string)