Python - Convert currency code to its sign
Asked Answered
C

6

22

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.

Crescint answered 19/12, 2010 at 13:36 Comment(3)
Input would be the currency code - USD, JPY, etc.Crescint
Note that many currencies have no symbol as such. "Kr" for example is not a symbol, it's just an abbreviation for "Krona" used in Scandinavian currencies. Actually writing out the currency "SEK", "NOK" "ISK" etc would in most cases be preferable for these. Also note that many symbols are not unique.Laverty
Possible duplicate of Is there a package that maintains a list all currencies with symbols?Larine
H
19

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).

Hawking answered 19/12, 2010 at 15:50 Comment(1)
This doesn't do any conversion, it just prints out a mapping for a fixed set of locales.Larine
C
20

How about Babel?

from babel import numbers
print numbers.get_currency_symbol('USD', locale='en') # => $1,500.00
print numbers.get_currency_symbol('GBP', locale='fr_FR') # => 1 500,00 £UK
Croft answered 3/6, 2013 at 8:36 Comment(2)
This formats a number as a currency. To convert a currency code to a symbol you can use babel's get_currency_symbol function.Vilhelmina
If you want to specify decimal places, pass format= and currency_digits= arguments. For example, to round to the nearest whole number: : numbers.format_currency(1, 'USD', locale='en', format='#,##0.#', currency_digits=False) is '1'. To enable extra decimal places: numbers.format_currency(1.2345, 'USD', locale='en', format='#,##0.00######', currency_digits=False) is '1.2345'Vilhelmina
H
19

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).

Hawking answered 19/12, 2010 at 15:50 Comment(1)
This doesn't do any conversion, it just prints out a mapping for a fixed set of locales.Larine
C
7

Forex-python package will convert Currency code to its sign.

>>> from forex_python.converter import CurrencyCodes
>>> c = CurrencyCodes()
>>> print c.get_symbol('GBP')
£

And you can convert amount from one currency to other.

>>> c= CurrencyRates()
>>> c.convert('USD', 'INR', 10)
674.73

give it a try

Coverley answered 29/5, 2016 at 13:1 Comment(1)
This converts USD -> US$.Vilhelmina
C
4

Use a dict.

>>> currencies = {'USD': '$', 'AUD': '$', 'EUR': '€'}
>>> print currencies['USD']
$
>>> print currencies['AUD']
$
>>> print currencies['EUR']
€
>>> print currencies['GBP']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'GBP'
Cerveny answered 19/12, 2010 at 13:42 Comment(0)
M
4

Does this help?

This page is a list of symbols used in everyday life to denote that a number is a monetary value, such as the dollar sign "$", the Pound sign "£", and the Euro sign "€".

IMPORTANT - We also maintain a full list of three-letter codes used internationally to distinguish one currency from another, such as "USD" for the United States Dollar, "GBP" for the United Kingdom Pound, and "EUR" for the Euro. To see a complete list of all of these codes, refer to our XE.com - ISO 4217 Type Currency Code List.

You should be able to create a useful dict mapping 3-letter codes to the appropriate Unicode currency symbol.

Manufacture answered 19/12, 2010 at 15:4 Comment(0)
J
3

Easiest way is to use babel get_currency_symbol function.

from babel.numbers import get_currency_symbol
get_currency_symbol('USD', locale='en_US')
Jazzman answered 4/10, 2022 at 9:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.