[Python-Dev] Incorrect behavior in str.format() method when padding with '\x00'

MRAB python at mrabarnett.plus.com
Thu Apr 3 17:49:32 CEST 2014


On 2014-04-03 16:20, Eric V. Smith wrote:
> On 04/02/2014 04:08 PM, John Tyree wrote:
>>
>> Hi all,
>>
>> Is there any particularly reason for the following behavior on both
>> 2.7.6 and 3.4.0 ?
>>
>>     >>> "{:\x00<5}".format(2)
>>     '2    '
>>     >>>
>>     "{:\x20<5}".format(2)
>>
>>     '2    '
>>     >>>
>>     "{:\x01<5}".format(2)
>>
>>     '2\x01\x01\x01\x01'
>>     >>> "{:\x00<5}".format(2) ==
>>     "{:\x20<5}".format(2)
>>
>>     True
>>
>>
>> The docs say "If a valid /align/ value is specified, it can be preceded
>> by a /fill/ character that can be any character and defaults to a space
>> if omitted," so I'm inclined to call this a good old fashioned bug.
>
> I'd say it's a bug. Please open a bug, assign it to me (eric.smith), and
> I'll comment on it there.
>
I'd agree. It looks like '\x00' is being confused with a NUL terminator
in the C code. I've seen such a thing before (now fixed).


More information about the Python-Dev mailing list