Коды валют Python в список

1

Есть ли у кого-нибудь отличный способ получить все трехбуквенные алфавитные коды валют (пример из них я имею в виду 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? Примечание. Я не хочу делать экранную версию, поскольку код должен работать в автономном режиме - веб-сайт является всего лишь примером кодов.

Похоже, что должен быть способ использования библиотеки locale, но мне не ясно, что я читаю документацию, и должен быть лучший способ, чем копировать их в файл!

Чтобы очистить вопрос дольше, в С# для той же проблемы, следующий код очень аккуратно использовал внутренние библиотеки локалей:

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

Я надеялся, что на питоне может быть эквивалент. И спасибо всем, кто дал ответ до сих пор.

  • 0
    Одноразовая очистка HTML?
  • 3
    code.google.com/p/python-money ?
Показать ещё 3 комментария
Теги:
internationalization
currency

2 ответа

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

  • 2
    это не то, что ищет OP. Почему люди никогда не читают комментарии для начала?
  • 0
    Спасибо Ли, но, к сожалению, код должен работать в автономном режиме, я знаю, что это не ясно в вопросе, поэтому я попытался сделать его более очевидным.
Показать ещё 13 комментариев
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()
  • 0
    @ Downvoter: Пожалуйста, объясните?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню