[Python-Dev] Formatting mini-language suggestion
James Y Knight
foom at fuhm.net
Thu Mar 12 05:36:35 CET 2009
On Mar 11, 2009, at 11:40 PM, Nick Coghlan wrote:
> Raymond Hettinger wrote:
>> It is not the goal to replace locale or to accomodate every
>> possible convention. The goal is to make a common task easier
>> for many users. The current, default use of the period as a decimal
>> point has not proven to be problem eventhough that convention is
>> not universal. For a thousands separator, a comma is a decent
>> choice
>> that makes it easy follow-on with s.replace(',', '_') or somesuch.
>
> In that case, I would simplify my suggestion to:
>
> [[fill]align][sign][#][0][minimumwidth][,][.precision][type]
>
> Addition to mini language documentation:
> The ',' option indicates that commas should be included in the
> output as a thousands separator. As with locales which do not use a
> period as the decimal point, locales which use a different convention
> for digit separation will need to use the locale module to obtain
> appropriate formatting.
This proposal has the advantage that you're not overly specifying the
behavior in the format string itself.
That is: the "," option is really just indicating "please insert
separators". With the current locale-ignorant implementation, that'd
just mean "a comma every 3 digits". But it leaves the door open for a
locale-sensitive variant of the format to be added in the future
without conflicting with the instructions in the format string. (as
the ability to specify an arbitrary character, or the ability to
specify a comma instead of a period for the decimal point would).
I'm not against Raymond's proposal, just against doing a *bad* job of
making it work in multiple locales. Locale conventions can be complex,
and are going to be best represented outside the format string.
(BTW: single quote is used by printf for the grouping flag rather than
comma)
James
More information about the Python-Dev
mailing list