2016-08-20 18 views
-2

私はかなり新しいです。Python-JSON - APIの出力を解析する方法は?

私はこのpythonスクリプトを書いて、blockr.ioからAPI呼び出しを行い、複数のビットコインアドレスのバランスをチェックしました。

btcaddy.txtの内容は、コインで区切られたビットコインアドレスです。この例では、thisを解析します。

import urllib2 
import json 


btcaddy = open("btcaddy.txt","r") 


urlRequest = urllib2.Request("http://btc.blockr.io/api/v1/address/info/" + btcaddy.read()) 
data = urllib2.urlopen(urlRequest).read() 
json_data = json.loads(data) 

balance = float(json_data['data''address']) 
print balance 

raw_input() 

ただし、エラーが発生します。私は間違って何をしていますか?今のところ、住所の残高を印刷するにはどうすればよいですか?

+0

あなたのコードを投稿していただきありがとうございますが、あなたの質問にもう少し詳しく説明してください:あなたはどんな問題を抱えていますか、あなたは何を期待していますか、あなたは何を試していますか(http://whathaveyoutried.com)遠い? [質問のチェックリスト](http://meta.stackoverflow.com/questions/156810/stack-overflow-question-checklist)をご覧になれば、あなたの質問によく答えることができます。ありがとう! –

+1

''data' 'address''の後にカンマと括弧がありませんか?あなたはデータがjson形式のコンテンツを持っていると確信していますか?あなたが表示されたエラーを追加しても害はありません –

答えて

1

コード内で複数のことが間違っています。ここに私の修正があります。私はforループをお勧めします。

import json 
import urllib 

addresses = open("btcaddy.txt", "r").read() 

base_url = "http://btc.blockr.io/api/v1/address/info/" 
request = urllib.urlopen(base_url+addresses) 
result = json.loads(request.read())['data'] 
for balance in result: 
    print balance['address'], ":" , balance['balance'], "BTC" 

最後に入力は必要ありません。

1

あなたの質問は明らかですが、あなたは試していません。

あなたには、レジストリ以上のファイルがあります。したがって、このファイルの行を取得する必要があります。

with open("btcaddy.txt","r") as a: 
    addresses = a.readlines() 

これで、レジストリを繰り返して、このuriをリクエストできます。 urllibモジュールで十分です。

import json 
import urllib 

base_url = "http://btc.blockr.io/api/v1/address/info/%s" 

for address in addresses: 
    request = urllib.request.urlopen(base_url % address) 
    result = json.loads(request.read().decode('utf8')) 
    print(result) 

HTTPレスポンスとしてバイトを送信しますので、あなたは、データを処理するためのアプローチとして、私たちにdecode('utf8')をするために必要があります。

+0

あなたのコードを試してみると、 (AttributeError: 'module'オブジェクトに属性 'request'はありません。) –

+1

おそらく 'request = urllib.urlopen ' – zachyee

+0

Python 2を使っているなら、@ zachyeeのaproachを使うべきです。 –

関連する問題