2011-01-18 12 views
1

3人の英字の通貨コード(例えば、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のリストに入れるには誰も気の利いた方法がありますか?注記コードはオフラインで動作する必要があるため、スクリーンスクラブ版を使用したくありません。ウェブサイトはコードの一例に過ぎません。リストにPythonの通貨コード

ロケールライブラリを使用する方法があるように見えますが、ドキュメントを読むことが私には分かりません。ファイルに貼り付けるよりも良い方法があるはずです。

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

私はPythonで同等があるかもしれません期待していた。同じ問題のためのC#で、次のコードは、それは非常にきれいに内部ロケールライブラリを使用していた

より多くの質問をクリアするには、。これまでの回答をいただいた皆様に感謝します。

+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 ..彼らは明らかに予約された名前なので、自分で削除することができる1つの不正なエントリ(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