Коды валют Python в список - PullRequest
1 голос
/ 18 января 2011

Есть ли у кого-нибудь изящный способ получить все трехбуквенные буквенные коды валют (например, я имею в виду 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 ]

1 голос
/ 18 января 2011

Вы можете получить данные о кодах валют (и других) из 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()
1 голос
/ 18 января 2011

Не очень элегантно или изящно, но вы можете сгенерировать список один раз и сохранить, чтобы использовать его позже:

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

output:

['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, последний элемент), которую вы можете просто удалить самостоятельно.

...