Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python - Convert currency code to its sign

In Python, how can I convert currency code to its sign?

For example, USD would be converted to $, and JPY would be converted to ¥.

If there isn't a generic way to do this, is there any simple dictionary of these on the Web?

Thanks.

like image 561
Alon Gubkin Avatar asked Dec 19 '10 13:12

Alon Gubkin


People also ask

How do you convert a live currency in Python?

The Forex-Python library provides the most direct way to get a currency conversion rate through API calls. It has different functions, which take the currency codes you want to convert from one currency to another and then return the current value. In this Python program, we are converting USD to INR.


2 Answers

Using the locale module:

import locale

locales=('en_AU.utf8', 'en_BW.utf8', 'en_CA.utf8',
    'en_DK.utf8', 'en_GB.utf8', 'en_HK.utf8', 'en_IE.utf8', 'en_IN', 'en_NG',
    'en_PH.utf8', 'en_US.utf8', 'en_ZA.utf8',
    'en_ZW.utf8', 'ja_JP.utf8')
for l in locales:
    locale.setlocale(locale.LC_ALL, l)
    conv=locale.localeconv()
    print('{ics} ==> {s}'.format(ics=conv['int_curr_symbol'],
                                 s=conv['currency_symbol']))

yields:

AUD  ==> $
BWP  ==> Pu
CAD  ==> $
DKK  ==> kr
GBP  ==> £
HKD  ==> HK$
EUR  ==> €
INR  ==> ₨
NGN  ==> ₦
PHP  ==> Php
USD  ==> $
ZAR  ==> R
ZWD  ==> Z$
JPY  ==> ¥

Note you need the locale information installed on your machine. On Ubuntu, this means having the right language-pack-* packages installed.

On *nix systems, you can find the list of known locales (e.g. en_GB.utf8) with

locale -a

I don't know of a way to obtain this list from within Python (without using subprocess).

like image 122
unutbu Avatar answered Oct 21 '22 14:10

unutbu


How about Babel?

from babel import numbers
print numbers.format_currency(1500, 'USD', locale='en') # => $1,500.00
print numbers.format_currency(1500, 'GBP', locale='fr_FR') # => 1 500,00 £UK
like image 45
brisssou Avatar answered Oct 21 '22 14:10

brisssou