Package: iso4217parse
ISO4217 Currency ParserParse currencies (symbols and codes) from and toISO4217.Similar toiso4217package, butdata is aquired by scraping wikipedia (seebelow) - this is repeatable and you stay on the most current datacurrency symbols are currated by hand - this allows some fuzzy currency matchingno download and parsing during installno external dependancies (enum34)When you want toreusethedata.jsonfile for your projects, please leave a attribution note. I licence the file under (CC BY 4.0).Install:pip install iso4217parseDocumentationEach currency is modeled as acollections.namedtuple:Currency=namedtuple('Currency',['alpha3',# unicode:       the ISO4217 alpha3 code'code_num',# int:           the ISO4217 numeric code'name',# unicode:       the currency name'symbols',# List[unicode]: list of possible symbols;#                first is opinionated choice for representation'minor',# int:           number of decimal digits to round'countries',# List[unicode]: list of countries that use this currency.])parse:Try to parse the input in a best effort approach by usingby_alpha3(),by_code_num(), ... functions:In[1]:importiso4217parseIn[2]:iso4217parse.parse('CHF')Out[2]:[Currency(alpha3='CHF',code_num=756,name='Swiss franc',symbols=['SFr.','fr','Fr.','F','franc','francs','Franc','Francs'],minor=2,countries=['CH','LI'])]In[3]:iso4217parse.parse(192)Out[3]:[Currency(alpha3='CUP',code_num=192,name='Cuban peso',symbols=['₱','＄','﹩','$','dollar','dollars','Dollar','Dollars','＄MN','﹩MN','$MN'],minor=2,countries=['CU'])]In[4]:iso4217parse.parse('Price is 5 €')Out[4]:[Currency(alpha3='EUR',code_num=978,name='Euro',symbols=['€','euro','euros'],minor=2,countries=['AD','AT','AX','BE','BL','CY','DE','EE','ES','FI','FR','GF','GP','GR','IE','IT','LT','LU','LV','MC','ME','MF','MQ','MT','NL','PM','PT','RE','SI','SK','SM','TF','VA','XK','YT'])]In[5]:iso4217parse.parse('CA﹩15.76')Out[5]:[Currency(alpha3='CAD',code_num=124,name='Canadian dollar',symbols=['CA$','CA＄','＄','$','dollar','dollars','Dollar','Dollars','CA﹩','﹩'],minor=2,countries=['CA'])]In[6]:iso4217parse.parse?Signature:iso4217parse.parse(v,country_code=None)Docstring:Tryparse`v`tocurrencies;filterbycountry_codeIf`v`isanumber,try`by_code_num()`;otherwisetry:1)if`v`is3characteruppercase:`by_alpha3()`2)Exactsymbolmatch:`by_symbol()`3)Exactcountrycodematch:`by_country()`4)Fuzzybysymbolmatchheuristic:`by_symbol_match()`Parameters:v:Union[unicode,int]Eitheraiso4217numericcodeorsomestringcountry_code:Optional[unicode]Iso3166alpha2countrycode.Returns:List[Currency]:foundCurrencyobjects.by_alpha3:Get the currency by its iso4217 alpha3 code:In[1]:importiso4217parseIn[2]:iso4217parse.by_alpha3('CHF')Out[2]:Currency(alpha3='CHF',code_num=756,name='Swiss franc',symbols=['SFr.','fr','Fr.','F','franc','francs','Franc','Francs'],minor=2,countries=['CH','LI'])In[3]:iso4217parse.by_alpha3?Signature:iso4217parse.by_alpha3(code)Docstring:GetCurrencyforISO4217alpha3codeParameters:code:unicodeAnalpha3iso4217code.Returns:Currency:Currencyobjectfor`code`,ifavailable.by_code_num:Get the currency by its iso4217 numeric code:In[1]:importiso4217parseIn[2]:iso4217parse.by_code_num(51)Out[2]:Currency(alpha3='AMD',code_num=51,name='Armenian dram',symbols=['֏','դր','dram'],minor=2,countries=['AM'])In[3]:iso4217parse.by_code_num?Signature:iso4217parse.by_code_num(code_num)Docstring:GetCurrencyforISO4217numericcodeParameters:code_num:intAniso4217numericcode.Returns:Currency:Currencyobjectfor`code_num`,ifavailable.by_country:Get currencies used in a country:In[1]:importiso4217parseIn[2]:iso4217parse.country('HK')Out[2]:[Currency(alpha3='HKD',code_num=344,name='Hong Kong dollar',symbols=['HK$','HK＄','＄','$','dollar','dollars','Dollar','Dollars','HK﹩','﹩','元'],minor=2,countries=['HK']),Currency(alpha3='CNH',code_num=None,name='Chinese yuan (when traded offshore)',symbols=['CN¥','￥','CN￥','¥','RMB','元'],minor=2,countries=['HK'])]In[3]:iso4217parse.country?Signature:iso4217parse.by_country(country_code)Docstring:GetallcurrenciesusedincountryParameters:country_code:unicodeiso3166alpha2countrycodeReturns:List[Currency]:Currencyobjectsusedincountry.by_symbol:Get currencies that use the given symbol:In[1]:importiso4217parseIn[2]:iso4217parse.by_symbol('＄MN')Out[2]:[Currency(alpha3='CUP',code_num=192,name='Cuban peso',symbols=['₱','＄','﹩','$','dollar','dollars','Dollar','Dollars','＄MN','﹩MN','$MN'],minor=2,countries=['CU'])]In[3]:iso4217parse.by_symbol('＄')Out[3]:[...]# 35 different currenciesIn[4]:[c.alpha3forciniso4217parse.by_symbol('＄')]Out[4]:['ARS','AUD','BBD','BMD','BZD','SBD','BND','CAD','CVE','KYD','CLP','COP','CUP','DOP','FJD','GYD','HKD','JMD','LRD','MXN','NAD','NZD','SGD','TTD','USD','UYU','TWD','CUC','ZWL','XCD','SRD','BRL','KID','NTD','TVD']In[5]:iso4217parse.by_symbol('＄',country_code='US')Out[5]:[Currency(alpha3='USD',code_num=840,name='United States dollar',symbols=['US$','$','＄','﹩','dollar','dollars','Dollar','Dollars','US＄','US﹩'],minor=2,countries=['AS','EC','GU','HT','MH','MP','PR','PW','SV','TC','TL','UM','US'])]In[6]:iso4217parse.by_symbol?Signature:iso4217parse.by_symbol(symbol,country_code=None)Docstring:Getlistofpossiblecurrenciesforsymbol;filterbycountry_codeLookforallcurrenciesthatusethe`symbol`.Iftherearecurrenciesusedinthecountryof`country_code`,returnonlythose;otherwisereturnallfoundcurrencies.Parameters:symbol:unicodeCurrencysymbol.country_code:Optional[unicode]Iso3166alpha2countrycode.Returns:List[Currency]:Currencyobjectsfor`symbol`;filterbycountry_code.by_symbol_match:Look for currency symbol occurence in input string:In[1]:importiso4217parseIn[2]:iso4217parse.by_symbol_match('RD$35.8')Out[2]:[Currency(alpha3='DOP',code_num=214,name='Dominican peso',symbols=['RD$','＄','﹩','$','dollar','dollars','Dollar','Dollars','RD＄','RD﹩'],minor=2,countries=['DO'])]In[3]:iso4217parse.by_symbol_match('The price is ₨ 35.8 !')Out[3]:[Currency(alpha3='LKR',code_num=144,name='Sri Lankan rupee',symbols=['රු','₨','Rs','ரூ','SLRs','rupees','rupee'],minor=2,countries=['LK']),Currency(alpha3='MUR',code_num=480,name='Mauritian rupee',symbols=['₨','rupees','rupee'],minor=2,countries=['MU']),Currency(alpha3='NPR',code_num=524,name='Nepalese rupee',symbols=['रु','₨','Rs','Re','rupees','rupee'],minor=2,countries=['NP']),Currency(alpha3='PKR',code_num=586,name='Pakistani rupee',symbols=['₨','Rs','rupees','rupee'],minor=2,countries=['PK'])]In[4]:iso4217parse.by_symbol_match('The price is ₨ 35.8 !',country_code='NP')Out[4]:[Currency(alpha3='NPR',code_num=524,name='Nepalese rupee',symbols=['रु','₨','Rs','Re','rupees','rupee'],minor=2,countries=['NP'])]In[5]:iso4217parse.by_symbol_match?Signature:iso4217parse.by_symbol_match(value,country_code=None)Docstring:Getlistofpossiblecurrencieswherethesymbolisinvalue;filterbycountry_code(iso3166alpha2code)Lookforfirstmatchingcurrencysymbolin`value`.Filtersimilarto`by_symbol`.Symbolsaresortedbylengthandrelevanceoffirstcharacter(see`_symbols()`).Note:Thisisa[heuristic](https://en.wikipedia.org/wiki/Heuristic)!Parameters:value:unicodeSomeinputstring.country_code:Optional[unicode]Iso3166alpha2countrycode.Returns:List[Currency]:Currencyobjectsfoundin`value`;filterbycountry_code.Data aquisitionBasic ISO4217 currency information is gathered from wikipedia:https://en.wikipedia.org/wiki/ISO_4217. The tables are parsed withgen_data.pyand stored iniso4217parse/data.json. This gives information foralpha3,code_num,name,minorandcountries. The currency symbol information is hand gathered from:individuel wikipedia pages, i.e.EURhas aDenominations->Symbolsection.http://www.iotafinance.com/en/ISO-4217-Currency-Codes.htmlhttp://www.xe.com/currency/, i.e.GBPhas aCurrency Facts->Symbolsectionand stored iniso4217parse/symbols.json. Each currency can have multiple currency symbols - the first symbol in the list is the (opinionated) choice
for the currency.Contribution Note: Possible ways to contribute here:hand check symbols for currency code.automatic generation of theiso4217parse/symbols.jsonfile.