2014-05-01 53 views
0

我JSON文件是這樣的:如何解析JSON文件就吃字典,字典中

{ 
    "url": { 
     "188.40.0.138\n": { 
      "bytes": 13882, 
      "code": 403 
     }, 
     "iantivirus.us\n": { 
      "bytes": 13563, 
      "code": 503 
     }, 
     "ibmsupport.net\n": { 
      "bytes": 13648, 
      "code": 503 
     }, 
     "usbnak.com\n": { 
      "bytes": 13779, 
      "code": 403 
     } 
    } 
} 

我想這個轉換成具有以下格式的CSV文件: 網址,188.40.0.138 \ N,13882.403當我使用

(說這是加載到可變數據)

for i in data['url']" 
    print i['status'] # says index should be integer 
    print i # prints 188.40.0.138\n 
    print i[0:3] #prints 188. 

這裏的問題是我是無法訪問內部元件

+0

「url」是靜態的嗎?你的意思是寫'url,188.40.0.138 \ n,13882.403',然後'url,iantivirus.us \ n,13563'等,還是應該'url'被省略? 'data'中是否還有其他鍵? –

回答

1

您的i只是關鍵;您必須查找data['url'][i]以獲取嵌套字典。

可以嵌套循環,使用dict.iteritems()(Python的2)或dict.items()(Python 3中):

for url, items in data.iteritems(): 
    for item, value in items.iteritems(): 
     print url, item, value['bytes'] 

如果你打算寫CSV,使用csv module

import csv 

with open('output.csv', 'wb') as outfh: 
    writer = csv.writer(outfh) 
    for url, items in data.iteritems(): 
     for item, value in items.iteritems(): 
      writer.writerow([url, item, value['bytes']]) 
+0

非常感謝,你救了我的命:) – tempB0y

0
for i,k in data.iteritems(): 
    for y,z in k.iteritems(): 
     print "url,%s,%s.%s"%(y,z.get('bytes'),z.get('code'))