70

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バイトの方法がない場合、バイトのフォーマットまたは「書き換え」を行う方法は?

4

7 に答える 7

24

別の方法は次のとおりです。

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

IPython 1.1.0 および Python 3.2.3 でテスト済み

于 2014-01-09T13:20:18.443 に答える
13

興味深いことに.format()、バイト シーケンスではサポートされていないようです。あなたが実証したように。

.join()ここで提案されているように使用できます: http://bugs.python.org/issue3982

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

BDFL 自身によって示されている.join()使用に関連する速度の利点があります: http://bugs.python.org/msg180449.format()

于 2013-03-29T20:05:28.550 に答える
6

Python 3.6+ の場合、次のきれいな構文を使用できます。

f'foo {bar}'.encode() # a byte string
于 2020-08-20T09:46:18.493 に答える