Ответ 1
И с 3.5 %
форматирование будет работать и для bytes
!
https://mail.python.org/pipermail/python-dev/2014-March/133621.html
В Python 3 можно форматировать строку, например:
"{0}, {1}, {2}".format(1, 2, 3)
Но как отформатировать байты?
b"{0}, {1}, {2}".format(1, 2, 3)
вызывает AttributeError: 'bytes' object has no attribute 'format'
.
Если для байтов нет метода format
, как сделать форматирование или "переписать" байты?
И с 3.5 %
форматирование будет работать и для bytes
!
https://mail.python.org/pipermail/python-dev/2014-March/133621.html
Другой способ:
"{0}, {1}, {2}".format(1, 2, 3).encode()
Протестировано на IPython 1.1.0 и Python 3.2.3
Интересно, что .format()
не поддерживается для байтовых последовательностей; как вы продемонстрировали.
Вы можете использовать .join()
, как предлагается здесь: http://bugs.python.org/issue3982
b", ".join([b'1', b'2', b'3'])
Существует преимущество скорости, связанное с .join()
с использованием .format()
, показанного самим BDFL: http://bugs.python.org/msg180449
Я нашел %b
лучше всего работающим в Python 3.6.2, он должен работать как для b "", так и "":
print(b"Some stuff %b. Some other stuff" % my_byte_or_unicode_string)