Python的3个字节格式(Python 3 bytes formatting)

2019-08-18 06:17发布

在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为字节的方法,怎么办格式或字节的“重写”?

Answer 1:

和3.5 %格式化会为工作bytes ,太!

https://mail.python.org/pipermail/python-dev/2014-March/133621.html



Answer 2:

另一种方法是:

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

测试在IPython的1.1.0和3.2.3的Python



Answer 3:

有趣的是.format()不出现对字节序列进行支撑; 因为你已经证明。

你可以使用.join()如下建议: http://bugs.python.org/issue3982

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

有相关联的速度优势.join()比使用.format()由BDFL自己所示: http://bugs.python.org/msg180449



Answer 4:

我发现了一个工作在Python 3.6.2最佳%,它应该工作既为B“”和“”:

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


文章来源: Python 3 bytes formatting