Подтвердить что ты не робот

Форматирование Python 3 байта

В 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, как сделать форматирование или "переписать" байты?

4b9b3361

Ответ 2

Другой способ:

"{0}, {1}, {2}".format(1, 2, 3).encode()

Протестировано на IPython 1.1.0 и Python 3.2.3

Ответ 3

Интересно, что .format() не поддерживается для байтовых последовательностей; как вы продемонстрировали.

Вы можете использовать .join(), как предлагается здесь: http://bugs.python.org/issue3982

b", ".join([b'1', b'2', b'3'])

Существует преимущество скорости, связанное с .join() с использованием .format(), показанного самим BDFL: http://bugs.python.org/msg180449

Ответ 4

Я нашел %b лучше всего работающим в Python 3.6.2, он должен работать как для b "", так и "":

print(b"Some stuff %b. Some other stuff" % my_byte_or_unicode_string)