2011-01-18 3 views
1

누구나 파이썬 2.5의 목록에 3 글자 알파벳 통화 코드 (예 : http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/currency_codes/currency_codes_list-1.htm)를 얻는 멋진 방법이 있습니까? 코드가 오프라인에서 작동해야하므로 화면 스크래핑 버전을 원하지 않습니다. 웹 사이트는 코드의 예일뿐입니다.목록으로 파이썬 통화 코드

로케일 라이브러리를 사용하는 방법이 있어야하지만 문서를 읽지 못했고 파일에 붙여 넣는 것보다 더 좋은 방법이 있어야합니다.

같은 문제에 대한 C#으로, 최대 더 많은 질문을 삭제하려면, 다음의 코드는 매우 깔끔하게 내부 로케일 라이브러리를 사용했다 :

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

을 내가 파이썬에 해당 될 수 있습니다 기대했다. 그리고 지금까지 답변을 제공 한 모든 사람들에게 감사드립니다.

+0

원샷 HTML 스크래핑 다음은 데이터 (동일한 결과를 오프라인으로 달성하기 위해 파일을 로컬로 저장)을 다운로드하고 목록을 채 웁니다 일부 코드는? – delnan

+3

http://code.google.com/p/python-money/? – Amber

+3

http://pypi.python.org/pypi/pycountry/0.12.1 – mouad

답변

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

대답에서 항상 댓글에 답을 표시합니까? 왜 사람들은 처음에는 코멘트를 읽지 않습니까? – SilentGhost

+0

고마워요.하지만 불행히도 코드는 오프라인에서 작동해야합니다. 문제가 명확하지 않으므로 좀 더 분명하게하려고했습니다. –

+0

나는 리 가오의 대답이 틀린 이유를 모르겠다. 통화 코드를 자동으로 생성 할 수 없으므로 (생성 할 알고리즘이 없음) 해당 코드 목록을 가지고 있어야합니다. 리 가오의 대답은 어떻게 그 목록을 생성 한 다음 저장하고 코드에서 사용하는지 알려줍니다. –

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 : 설명해주세요. – marcog

관련 문제