2017-10-14 103 views
-3

我想從JSON響應中提取大量變量並將其保存在csv文件中。 的JSON-效應初探如下所示:Python:從JSON中提取變量

{ 
"Response":"Success", 
"Message":"Coin list succesfully returned!", 
"BaseImageUrl":"https://www.cryptocompare.com", 
"BaseLinkUrl":"https://www.cryptocompare.com", 
"DefaultWatchlist":{ 
"CoinIs":"1182,7605,5038,24854,3807,3808,202330,5324,5031,178978", 
"Sponsored":"1182" 
}, 
"Data":{ 
"USC":{ 
"Id":"100954", 
"Url":"/coins/usc/overview", 
"ImageUrl":"/media/1383363/usc.png", 
"Name":"USC", 
"Symbol":"USC", 
"CoinName":"Ultimate Secure Cash", 
"FullName":"Ultimate Secure Cash (USC)", 
"Algorithm":"SHA256", 
"ProofType":"PoS", 
"FullyPremined":"0", 
"TotalCoinSupply":"200084200", 
"PreMinedValue":"N/A", 
"TotalCoinsFreeFloat":"N/A", 
"SortOrder":"1233", 
"Sponsored":false 

我想獲得以下變量:名稱,符號,CoinName和ID

爲了提取JSON的所有值我使用下面的代碼:

def getCoinList(): 
req = requests.get(‘https://www.cryptocompare.com/api/data/coinlist/’).json() 
info = req[‘Data’] 
coinList = pd.DataFrame(info) 
coinList = coinList.transpose() 
coinList.to_csv(‘coinList.csv’) 
return coinList 

但是,我想只提取指定的變量。

def getCoinList(): 
req = requests.get(‘https://www.cryptocompare.com/api/data/coinlist/’).json()['Data'] 
info = req['...'] /// How do I all four variables? 
coinList = pd.DataFrame(info) 
coinList = coinList.transpose() 
coinList.to_csv(‘coinList.csv’) 
return coinList 

我不知道如何修改這段代碼來提取只有四個指定的變量?誰能幫我這個。在此先感謝,

+0

使用字典 – Adi219

+0

Python版本支持''''和'''並且不需要縮進?而你的「JSON」不是JSON,至少有一些'}'丟失。 –

+1

如果你打開你的.json文件,如**,打開(文件,'r')作爲f:** ...然後你管理你的字典獲得鑰匙:** yourdict.get('yourkey ')** ..當然這有效,如果你知道手工獲得的密鑰的名稱。 –

回答

1

如果你想包含在dict幾個具體值的列表,你需要手動創建一個列表:

mylist = [req['Name'], req['Symbol'], req['CoinName'], req['ID']] 

或者,如果你想有一個dict

mydict = {'Name': req['Name'], 'Symbol': req['Symbol'], 
      'CoinName': req['CoinName'], 'ID': req['ID']} 

所以寫這個到csv:

import csv 

with open('coinList.csv', 'a') as filep: 
    csvwriter = csv.writer(filep) 
    csvwriter.writerow([req['Name'], req['Symbol'], req['CoinName'], req['ID']])