Python货币代码到列表中

时间:2011-01-18 16:40:11

标签: python internationalization currency

有没有人有一个很好的方法可以将所有三个字母的字母货币代码(我的意思是http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/currency_codes/currency_codes_list-1.htm的一个例子)放到Python 2.5的列表中?注意我不想做一个屏幕抓取版本,因为代码必须脱机工作 - 网站只是代码的一个例子。

看起来应该有一种使用语言环境库的方法,但是我不清楚阅读文档,并且必须有一种比将它们复制到文件中更好的方法!

要更清楚地解决这个问题,在C#中遇到同样的问题,下面的代码使用内部语言环境库非常巧妙地完成了它:

CultureInfo.GetCultures(CultureTypes.SpecificCultures)
          .Select(c => new RegionInfo(c.LCID).CurrencySymbol)
          .Distinct()

我希望在python中可能有一个等价物。感谢迄今为止提供答案的所有人。

2 个答案:

答案 0 :(得分:1)

不是很优雅或漂亮,但你可以生成一次列表并保存以便以后使用:

import urllib, re
url = "http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/currency_codes/currency_codes_list-1.htm"
print re.findall(r'\<td valign\="top"\>\s+([A-WYZ][A-Z]{2})\s+\</td\>', urllib.urlopen(url).read())

输出:

['AFN', 'EUR', 'ALL', 'DZD', 'USD', 'EUR', 'AOA', 'ARS', 'AMD', 'AWG', 'AUD',
...
'UZS', 'VUV', 'EUR', 'VEF', 'VND', 'USD', 'USD', 'MAD', 'YER', 'ZMK', 'ZWL', 'SDR']

请注意,您需要在X之后修剪所有内容,因为它们显然是保留名称,这意味着您将获得一个可以自行删除的恶意条目(SDR,最后一个元素)。

答案 1 :(得分:1)

您可以从geonames获取货币代码(和其他)数据。下面是一些下载数据的代码(在本地保存文件以脱机获得相同的结果)并填充列表:

import urllib2

data = urllib2.urlopen('http://download.geonames.org/export/dump/countryInfo.txt')
ccodes = []
for line in data.read().split('\n'):
  if not line.startswith('#'):
    line = line.split('\t')
    try:
      if line[10]:
        ccodes.append(line[10])
    except IndexError:
      pass
ccodes = list(set(ccodes))
ccodes.sort()