A suggestion for a possible Python module
Jp Calderone
exarkun at intarweb.us
Sat Mar 8 22:57:16 EST 2003
On Sat, Mar 08, 2003 at 07:00:55PM -0800, Matt Gerrans wrote:
> "Andrew Dalke" wrote:
> > ...
> > The ones I could think of are:
> > - insert commas in a number, as in "10000" -> "10,000"
> >
> > def commafy(s):
> > s = s.reverse()
> > terms = []
> > for i in range(0, len(s), 3):
> > terms.append(s[i:i+3])
> > return ",".join(terms).reverse()
> > ...
>
> For this one, I'd prefer locale.format().
>
This is the most common alternative solution I hear, and I don't think
it's right.
locale.format() isn't guaranteed to put in commas. (You can argue that
you should respect the locale's conventions and accept this, but that's a
different discussion).
You could, of course, -change- the locale, then change it back afterwards,
but hopefully everyone sees that for the dirty hack it is. FWIW:
def commaize(s):
P = len(s) % 3
st = s[:P] + (len(s) > 3 and P and ',' or '')
return st + ','.join([s[i:i+3] for i in range(P, len(s), 3)])
It's only two lines shorter, but it doesn't involve going through the
string backwards ;)
Jp
--
Seduced, shaggy Samson snored.
She scissored short. Sorely shorn,
Soon shackled slave, Samson sighed,
Silently scheming,
Sightlessly seeking
Some savage, spectacular suicide.
-- Stanislaw Lem, "Cyberiad"
--
up 5 days, 19:59, 7 users, load average: 0.00, 0.02, 0.00
More information about the Python-list
mailing list