2016-04-26 86 views
0

我有一個Instagram API,我將其加載到JSON中。響應正常,我甚至可以從收到的數據中獲取ID。然後我將它保存在一個python列表中,並使用openpyxl將它放入一個Excel表格中。檢查JSON字典是否爲空並存儲在列表中

這裏是捕捉。加載這些值時,如果在Instagram賬戶被刪除的情況下API沒有響應,那麼JSON將爲空,我想將「ACC已刪除」存儲在列表中。

(注: - 我也提到類似的問題,但沒有得到我的回答其中的工作原理。)

下面是代碼:

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') 

JSON響應是這樣的:

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

如果json響應如下所示是空的,如何將「ACC已刪除」存儲在列表中?

{ 
"meta": { 
"code": 200 
}, 
"data": [] 
} 

回答

0

您可以檢查數據是否在你的腳本空,如果是添加新條目「ACC刪除」到列表中。

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

我想你沒有得到正確的答案@Ashafix。我希望在列表(「列表」)中存儲「Acc刪除」,當API的響應與上面的空json相似時,我會追加數據。 –

+0

相應地更改了代碼。 –

+0

我試過了。這是不對的。 Json跳過空字典並獲得下一個結果,然後將其列入列表中。 –