Format a number as currency! I can't find any help on this simpleproblem.

R

Richard Kessler

I am relatively new to Python. Love it, but I find things that I can do
easily in .NET and cannot find a way to do in Python. I need to format a
number as currency, for example 12343.56 to $12,343.56.

In C# all I need to do is decimal x = 12343.56 then x.ToString("$###,###.00");

I cannot find a way to do this in Python. I must be missing something very
simple here. I have tried the locale module but it will not put in the commas.
I hope I do not have to write my own formatting routine...surely one is out
there and I just can't find it.

Running on XP Pro. Python 2.4.3.

Thanks much in advance,

Richard
 
B

Bernard

import locale
locale.setlocale(locale.LC_ALL, 'English_United States.1252') 'English_United States.1252'
conv = locale.localeconv()
x = 1234567.8
locale.format("%d", x, grouping=True) '1,234,567'
locale.format("%s%.*f", (conv['currency_symbol'], conv['int_frac_digits'], x), grouping=True)
'$1,234,567.80'

Hi Richards,

This works for me. I agree it's a bit complicated compared to C# but it
works. I'd put it in a function if I had to use it.
 
J

jr

Hi, Bernard.
Just tried the first 2 commands on win XP, Python 2.5 under Idle.
An Error is raised: "unsupported locale setting" (lib/locale.py in
setlocale, line 476).
Actually I get the error also under Python 2.4.3
Any idea what I'm missing?
Thanks in advance.
Jürgen
Bernard said:
import locale
locale.setlocale(locale.LC_ALL, 'English_United States.1252') 'English_United States.1252'
conv = locale.localeconv()
x = 1234567.8
locale.format("%d", x, grouping=True) '1,234,567'
locale.format("%s%.*f", (conv['currency_symbol'], conv['int_frac_digits'], x), grouping=True)
'$1,234,567.80'

Hi Richards,

This works for me. I agree it's a bit complicated compared to C# but it
works. I'd put it in a function if I had to use it.


Richard said:
I am relatively new to Python. Love it, but I find things that I can do
easily in .NET and cannot find a way to do in Python. I need to format a
number as currency, for example 12343.56 to $12,343.56.

In C# all I need to do is decimal x = 12343.56 then x.ToString("$###,###.00");

I cannot find a way to do this in Python. I must be missing something very
simple here. I have tried the locale module but it will not put in the commas.
I hope I do not have to write my own formatting routine...surely one is out
there and I just can't find it.

Running on XP Pro. Python 2.4.3.

Thanks much in advance,

Richard
 
P

Peter Otten

Just tried the first 2 commands on win XP, Python 2.5 under Idle.
An Error is raised: "unsupported locale setting" (lib/locale.py in
setlocale, line 476).
Actually I get the error also under Python 2.4.3
Any idea what I'm missing?

Let your machine decide
'de_DE.UTF-8'

or try something less specific:
'en_US'

Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,438
Messages
2,571,699
Members
48,796
Latest member
Greg L.
Top