2017-10-14 2 views
-3

Ich möchte eine Anzahl von Variablen aus einer JSON-Antwort extrahieren und in einer CSV-Datei speichern. Die JSON-reponse sieht wie folgt aus:Python: Variablen aus JSON extrahieren

{ 
"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 

Ich mag würde die folgenden Variablen erhalten: Name, Symbol, CoinName und ID

Um alle Werte des JSON zu extrahieren -response, verwende ich den folgenden Code:

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 

aber ich möchte nur die angegebenen Variablen extrahieren.

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 

Ich bin mir nicht sicher, wie ich diesen Code ändern kann, um nur die vier angegebenen Variablen zu extrahieren? Kann mir jemand dabei helfen? Vielen Dank im Voraus,

+0

Verwenden Sie ein Wörterbuch – Adi219

+0

Welche Python-Version unterstützt "" und "" und braucht keinen Einzug? Und dein "JSON" ist kein JSON, es fehlen mindestens ein paar "}". –

+1

Was ist, wenn Sie Ihre .json-Datei wie, ** öffnen (Datei, 'r') als f: ** ... und danach verwalten Sie Ihr Wörterbuch die Schlüssel bekommen mit: ** yourdict.get ('yourkey ') ** .. natürlich funktioniert das, wenn du von Hand den Namen der Schlüssel kennst. –

Antwort

1

Wenn Sie eine Liste mit mehreren spezifischen Werte in Ihrem dict wollen, müssen Sie eine Liste manuell erstellen:

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

Oder, wenn Sie einen dict wollen:

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

So schreiben Sie dies zu einem csv:

import csv 

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