From: Steven D'Aprano on
On Thu, 05 Aug 2010 00:22:57 -0700, geremy condra wrote:

>>>>> locale.setlocale(locale.LC_ALL, "")
>> 'de_DE.UTF-8'
>>>>> print locale.currency(13535, grouping=True)
>> 13.535,00 €
>>>>> print locale.format("%d", 13535, grouping=True)
>> 13.535
>>
>> Peter
>
> I had literally no idea this existed. Thanks.

I knew it existed, but completely forgot about it.

Thanks also Peter.


--
Steven
From: Chris Withers on
Peter Otten wrote:
>>>> locale.setlocale(locale.LC_ALL, ("en_US", "UTF-8"))
> 'en_US.UTF8'
>>>> print locale.currency(13535, grouping=True)
> $13,535.00

Okay, so if I'm writing a wsgi app, and I want to format depending on
the choices of the currently logged in users, what would you recommend?

I can't do setlocale, since that would affect all users, and in a
mult-threaded environment that would be bad.

Does that mean the whole locale package is useless to all web-app builders?

Chris

From: DarkBlue on
On Aug 5, 7:06 pm, Chris Withers <ch...(a)simplistix.co.uk> wrote:
> Peter Otten wrote:
> >>>> locale.setlocale(locale.LC_ALL, ("en_US", "UTF-8"))
> > 'en_US.UTF8'
> >>>> print locale.currency(13535, grouping=True)
> > $13,535.00
>
> Okay, so if I'm writing a wsgi app, and I want to format depending on
> the choices of the currently logged in users, what would you recommend?
>
> I can't do setlocale, since that would affect all users, and in a
> mult-threaded environment that would be bad.
>
> Does that mean the whole locale package is useless to all web-app builders?
>
> Chris

from re import *

class editmoney(float):
def __init__(self,mymoney):
self.mymoney = mymoney
def __str__(self):
temp = "%.2f" % self.mymoney
profile = compile(r"(\d)(\d\d\d[.,])")
while 1:
temp, count = subn(profile,r"\1,\2",temp)
if not count: break
return temp
From: Peter Otten on
Chris Withers wrote:

> Peter Otten wrote:
>>>>> locale.setlocale(locale.LC_ALL, ("en_US", "UTF-8"))
>> 'en_US.UTF8'
>>>>> print locale.currency(13535, grouping=True)
>> $13,535.00
>
> Okay, so if I'm writing a wsgi app, and I want to format depending on
> the choices of the currently logged in users, what would you recommend?
>
> I can't do setlocale, since that would affect all users, and in a
> mult-threaded environment that would be bad.
>
> Does that mean the whole locale package is useless to all web-app

Blame it on the C guys ;)

I've seen

http://babel.edgewall.org/wiki/Documentation/intro.html
http://babel.edgewall.org/wiki/ApiDocs/babel.numbers
http://babel.edgewall.org/wiki/BabelFaq#WhatalternativesexistforPythonprojects

mentioned here but not yet tried it myself.

Peter

From: John Posner on
On 8/5/2010 12:33 AM, John Nagle wrote:
> There's got to be a better way to do this:
>
>
> def editmoney(n) :
> return((",".join(reduce(lambda lst, item : (lst + [item]) if
> item else lst,
> re.split(r'(\d\d\d)',str(n)[::-1]),[])))[::-1])
>

Here's a more elegant variant, using regexp lookahead:

def thous_format(integer_string):
"""
add comma thousands separator(s) to an integer-valued string
"""
return re.sub(r'(\d{3})(?=\d)', r'\1,', integer_string[::-1])[::-1]

I *thought* that I had found this on python-list on or about July 5, but
I didn't find the thread after a search through the archives.

-John