在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
方法的字节,如何进行格式化或“重写”字节?
在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
方法的字节,如何进行格式化或“重写”字节?
而且自3.5 %
格式化也将为bytes
工作!
https://mail.python.org/pipermail/python-dev/2014-March/133621.html
有趣的是.format()
似乎不支持字节序列;正如你所证明的那样。
你可以使用.join()
的建议在这里:http://bugs.python.org/issue3982
b", ".join([b'1', b'2', b'3'])
没有与.join()
在使用.format()
相关联的速度优势被BDFL本人表示:http://bugs.python.org/msg180449
另一种方法是:
"{0}, {1}, {2}".format(1, 2, 3).encode()
在IPython 1.1.0上测试& Python 3 .2.3
这不适用,如果你的格式参数是字节 – user3467349
我发现%的加工在Python 3.6.2最好的,它应该工作既为B “” 和 “”:
print(b"Some stuff %a. Some other stuff" % my_byte_or_unicode_string)
@克里斯好抓,3.6.2 –
sweet!我希望如此,因为这是你如何格式化C字符串,哈哈 – vitiral
Lol。他们首先丢弃了2.x的功能或打破它们,返回u''文字(但是ur''是禁止的!),字节字符串格式化'open()'默认在系统特定的编码中打开 - 很好,在2.x中他们有字符串代码,如果与非-ascii符号,在3.x中,它们用代码打开,如果它在Windows机器上使用,它会被破坏,因为它的“本地”编码是ascii代码页。是否值得它首先打破兼容性,以便将功能的一半返回? –
这样做意味着'%'不再计划弃用? –