[Python-ideas] [Python-Dev] Rough draft: Proposed format specifier for a thousands separator (discussion moved from python-dev)

Nick Coghlan ncoghlan at gmail.com
Sat Mar 14 04:50:25 CET 2009


Joining the discussion over here to add a couple of points that I
haven't seen in Raymond's PEP updates on the checkin list:

1. The Single Unix Specification apparently uses an apostrophe as a flag
in prinft() %-formatting to request inclusion of a thousands separator
in a locale aware way [1]. Since the apostrophe is much harder to
mistake for a period than a comma is, I would modify my "just a flag"
suggestion to use an apostrophe as the flag instead of a comma:

   [[fill]align][sign][#][0][width]['][.precision][type]

The output would still use commas though:

format(1234, "8.1f")     -->    '  1234.0'
format(1234, "8'.1f")    -->    ' 1,234.0'
format(1234, "8d")       -->    '    1234'
format(1234, "8'd")      -->    '   1,234'


2. PEP 3101 *already included* a way to modify the handling of format
strings in a consistent way: use a custom string.Formatter subclass
instead of relying on the basic str.format method.

When the mini language parser is exposed (which I consider a separate
issue from this PEP), a locale aware custom formatter is going to find a
"include digit separators" flag far more useful than the overly explicit
"use this thousands separator and this decimal separator".

Cheers,
Nick.

[1] http://linux.die.net/man/3/printf

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------



More information about the Python-ideas mailing list