在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中,可以设置如下字符串的格式:
"{0}, {1}, {2}".format(1, 2, 3)
但是如何格式化字节呢?
b"{0}, {1}, {2}".format(1, 2, 3)
提高AttributeError: 'bytes' object has no attribute 'format'
分.
如果字节没有format
方法,如何格式化或"重写"字节?
从Python3.5开始,%
种格式也适用于bytes
种格式!
这是伊桑·弗曼(Ethan Furman)所著《PEP 461》的一部分:
PEP: 461
Title: Adding % formatting to bytes and bytearray
Version: $Revision$
Last-Modified: $Date$
Author: Ethan Furman <ethan at stoneleaf.us>
Status: Draft
Type: Standards Track
Content-Type: text/x-rst
Created: 2014-01-13
Python-Version: 3.5
Post-History: 2014-01-14, 2014-01-15, 2014-01-17, 2014-02-22, 2014-03-25,
2014-03-27
Resolution:
Abstract
========
This PEP proposes adding % formatting operations similar to Python 2's ``str``
type to ``bytes`` and ``bytearray`` [1]_ [2]_.
Rationale
=========
While interpolation is usually thought of as a string operation, there are
cases where interpolation on ``bytes`` or ``bytearrays`` make sense, and the
work needed to make up for this missing functionality detracts from the overall
readability of the code.
Motivation
==========
With Python 3 and the split between ``str`` and ``bytes``, one small but
important area of programming became slightly more difficult, and much more
painful -- wire format protocols [3]_.
This area of programming is characterized by a mixture of binary data and
ASCII compatible segments of text (aka ASCII-encoded text). Bringing back a
restricted %-interpolation for ``bytes`` and ``bytearray`` will aid both in
writing new wire format code, and in porting Python 2 wire format code.
Common use-cases include ``dbf`` and ``pdf`` file formats, ``email``
formats, and ``FTP`` and ``HTTP`` communications, among many others.
PEP 461为accepted by Guido van Rossum on March 27, 2014:
认可的.祝贺你,又一个相当有争议的问题
从这一点上,我们可以明显地得出结论,%
不再是预定的弃用版本(正如在Python3.1中宣布的那样).