2016-04-26 9 views
0

Ich habe eine Instagram-API, die ich in einen JSON lade. Die Antwort kommt richtig und ich kann sogar die ID aus den empfangenen Daten holen. Dann speichere ich es in einer Python-Liste und lege es in ein Excel-Blatt mit openpyxl.Prüfen, ob ein JSON-Wörterbuch leer ist oder nicht und in einer Liste gespeichert ist

Hier ist der Haken. Beim Laden der Werte, wenn im Falle eines gelöschten Instagram-Accounts keine Antwort von der API vorhanden ist und der JSON leer ist, möchte ich "ACC gelöscht" in der Liste speichern.

(ANMERKUNG: - ich ähnliche Fragen auch bezeichnet aber knapp über meine Antwort bekommen, die funktioniert.)

Hier ist der Code:

for r in range(1,51): 
    var=r,test.cell(row=r,column=1).value 
    xy=var[1] 
    myopener=Myopener() 
    url=myopener.open('https://api.instagram.com/v1/users/search?q='+xy+'&count=1&access_token=641567093.1fb234f.a0ffbe574e844e1c818145097050cf33') 

    **beta=json.load(url) 
    for item in beta['data']: 
     list.append(item['id'])** //*HERE I WANT THE CHANGE* 


    for j in range(len(list)): 
     for row in sheet.iter_rows(min_row=j+1, max_row=j+1): 
      for cell in row: 
       cell.value=list[j] 
       wb.save('sample.xlsx') 

Die JSON Antwort ist diese:

{ 
"meta": { 
"code": 200 
}, 
"data": [ 
{ 
    "username": "rawhawk_sk", 
    "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12724928_109384759877664_1105313598_a.jpg", 
    "id": "670907103", 
    "full_name": "shwan mcswan" 
} 
] 
} 

Wenn die JSON-Antwort wie folgt leer ist, wie wird "ACC gelöscht" in der Liste gespeichert?

Antwort

0

Sie können prüfen, ob Daten in Ihrem Skript leer sind und wenn ja, fügen Sie der Liste einen neuen Eintrag 'ACC gelöscht' hinzu.

import json 

jsons = [] 
jsons.append("""{ 
"meta": { 
"code": 200 
}, 
"data": [ 
{ 
    "username": "rawhawk_sk", 
    "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12724928_109384759877664_1105313598_a.jpg", 
    "id": "670907103", 
    "full_name": "shwan mcswan" 
} 
] 
} 
""") 

jsons.append("""{ 
"meta": { 
"code": 200 
}, 
"data": [] 
} """) 

output_list = [] 

for txt in jsons: 
    beta = json.loads(txt) 
    if beta.get('data'): 
     for item in beta['data']: 
      output_list.append(item['id']) 
    else: 
     output_list.append('ACC deleted') 

print(output_list) 
+0

Ich denke, Sie haben nicht die richtige Frage @Ashafix bekommen. Ich möchte "Acc gelöscht" in der Liste ("Liste"), wo ich die Daten anhängen, wenn die Antwort von der API ist wie die oben leere Json. –

+0

änderte den Code entsprechend. –

+0

Ich habe es versucht. Das ist nicht richtig. Der Json überspringt das leere Wörterbuch und holt das nächste Ergebnis, und dann wird es in die Liste aufgenommen. –

Verwandte Themen