cross platform use of set locale

Serge Orlov Serge.Orlov at gmail.com
Wed Mar 23 07:50:02 EST 2005


Timothy Smith wrote:
> Serge Orlov wrote:
>
> >Timothy Smith wrote:
> >
> >
> >>thats ok, but how do i get it to group thousands with a , ?
> >>and thats would mean i'd have to run everything through a formatter
> >>before i displayed it :/ it'd be nicer if i could just select a
> >>proper locale
> >>
> >>
> >
> >I think you're misusing locale. There is no guarantee that any
> >specific locale will have properties (like grouping) set to a known
> >value. Are you trying to format money? Then you need a special class
> >so that you can say:
> >
> >d = Dollars(1000000.01)
> >print "You have %s in your account" % d
> >
> >and get
> >
> >You have $1,000,000.01 in your account.
> >
> >  Serge.
> >
> >
> >
> thats exactly what i'm trying to do, only having to do that for all
> my outputs is more work then i'd like :/

SUS has added numeric grouping

       For  some  numeric conversions a radix character (`decimal
       point') or thousands'  grouping  character  is  used.  The
       actual  character  used  depends on the LC_NUMERIC part of
       the locale. The POSIX locale uses `.' as radix  character,
       and does not have a grouping character.  Thus,
                   printf("%'.2f", 1234567.89);
       results   in   `1234567.89'   in   the  POSIX  locale,  in
       `1234567,89' in the nl_NL locale, and in `1.234.567,89' in
       the da_DK locale.

but they hasn't added monetary grouping. I don't think you'll
get monetary grouping anytime soon. Besides as far as I understood
your question, you *always* want grouping, right?

Actually I don't think a cryptic flag is better than an explicit
formatter. What do you think is more clear for a maintainer of your
code?

print "%'.2f" % amount

or

print "%s" % dollars(amount)





> why is this a misuse of locale? it's exactly what locale is meant for
> isn't it?

I just reacted to your words "select a proper locale" and "how do i get
it to group thousands with a ,". It's just not a good idea to select
a locale and expect the grouping character to be "," or expect
grouping,
see nl_NL locale example above.

  Serge.




More information about the Python-list mailing list