Bug in format specification in Python 3?

MRAB python at mrabarnett.plus.com
Tue Aug 11 23:04:43 CEST 2009

Robert Dailey wrote:
> Hello,
> According to the Python 3.1 documentation, I can have a format
> specification like so:
> print( 'This is a hex number: {:#08x}'.format( 4 ) )
> This will print:
> This is a hex number: 0x000004
> I notice that the '0x' portion is counted in the width, which was
> specified as 8. This seems wrong to me. Is this by design? If so, why?
> I expect that the width portion to only apply to the input + padding
> only. I don't consider the '0x' portion part of the padding. But maybe
> it is...

The width portion is the width of what is produced by the specification.
The '#' tells it to add '0x', so that's part of what's produced. If you
don't want the '0x' to be counted then don't include '#' in the
specification. It makes perfect sense! :-)

More information about the Python-list mailing list