2014-05-01 56 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'))