如何将货币符号转换为代码?

How can I convert currency symbol to code?

我正在尝试将一些以英镑和美元表示的价格转换为欧元。有没有Python包可以把符号转换成代码?哪个可以代替下面的函数调用convert_sym_to_code(currency_symbol)?

from forex_python.converter import CurrencyRates
curconv = CurrencyRates()
princess=["", "£23"]

for price in princess:
   m = re.search("\d", price)
   currency_symbol = price[0:m.start()]
   tmp = price[m.start():]

   currency_code = convert_sym_to_code(currency_symbol)
   print curconv.convert(currency_code, 'EUR', float(tmp))

从技术上讲,您只需要从符号到代码的映射,因此 "convert_sym_to_code" 将非常简单 - 除了相当多的货币使用相同的符号(例如“$”符号被全球至少 25 种货币),因此您不能将该符号用作唯一键(当然,除非您可以接受错误的结果)。

一种天真的方法是只使用字典:

CURRENCY_MAPPING = [
    '$': 'USD',
    '£': 'GBP',
]

def convert_sym_to_code(currency_symbol):
    try:
        CURRENCY_MAPPING[currency_symbol.strip()]
    except KeyError:
        raise ValueError('Unknown symbol "%s" % currency_symbol)

如果您遇到任何未知符号,这将失败,但它可以很容易地扩展。更重要的是,如果使用 $ 来指定,您的计算将是错误的。澳元.