In Python 3, one can format a string like:
\"{0}, {1}, {2}\".format(1, 2, 3)
But how to format bytes?
b\"{0}, {1}, {2}\".fo
For Python 3.6+ you can use this nice and clean syntax:
f'foo {bar}'.encode() # a byte string
And as of 3.5 %
formatting will work for bytes
, too!
https://mail.python.org/pipermail/python-dev/2014-March/133621.html
Interestingly .format()
doesn't appear to be supported for byte-sequences; as you have demonstrated.
You could use .join()
as suggested here: http://bugs.python.org/issue3982
b", ".join([b'1', b'2', b'3'])
There is a speed advantage associated with .join()
over using .format()
shown by the BDFL himself: http://bugs.python.org/msg180449
Another way would be:
"{0}, {1}, {2}".format(1, 2, 3).encode()
Tested on IPython 1.1.0 & Python 3.2.3
I found the %b
working best in Python 3.6.2, it should work both for b"" and "":
print(b"Some stuff %b. Some other stuff" % my_byte_or_unicode_string)
I've found this to work.
a = "{0}, {1}, {2}".format(1, 2, 3)
b = bytes(a, encoding="ascii")
>>> b
b'1, 2, 3'