栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

解析嵌套的JSON并将其写入CSV

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解析嵌套的JSON并将其写入CSV

我只收集第一个对象的键,然后假定格式的其余部分是一致的。

以下代码还将嵌套对象限制为 一个
;您没有指定当一个以上时应该发生的情况。具有两个或多个相同长度的嵌套结构可以工作(将它们“压缩”在一起),但是,如果您具有不同长度的结构,则需要做出明确的选择来处理它们。用空列压缩以填充或写出这些条目的乘积(A
x B行,每次找到B条目都从A重复信息)。

import csvfrom operator import itemgetterwith open(outputfile, 'wb') as outf:    writer = None  # will be set to a csv.DictWriter later    for key, item in sorted(data.items(), key=itemgetter(0)):        row = {}        nested_name, nested_items = '', {}        for k, v in item.items(): if not isinstance(v, dict):     row[k] = v else:     assert not nested_items, 'only one nested structure is supported'     nested_name, nested_items = k, v        if writer is None: # build fields for each first key of each nested item first fields = sorted(row) # sorted keys of first item in key sorted order nested_keys = sorted(sorted(nested_items.items(), key=itemgetter(0))[0][1]) fields.extend('__'.join((nested_name, k)) for k in nested_keys) writer = csv.DictWriter(outf, fields) writer.writeheader()        for nkey, nitem in sorted(nested_items.items(), key=itemgetter(0)): row.update(('__'.join((nested_name, k)), v) for k, v in nitem.items()) writer.writerow(row)

对于您的样本输入,将产生:

COUNTRY,ITW,VENUE,RACES__NO,RACES__TIMEHAE,XAD,JOEBURG,1,12:35HAE,XAD,JOEBURG,2,13:10HAE,XAD,JOEBURG,3,13:40HAE,XAD,JOEBURG,4,14:10HAE,XAD,JOEBURG,5,14:55HAE,XAD,JOEBURG,6,15:30HAE,XAD,JOEBURG,7,16:05HAE,XAD,JOEBURG,8,16:40ABA,XAD,FOOBURG,1,12:35ABA,XAD,FOOBURG,2,13:10ABA,XAD,FOOBURG,3,13:40ABA,XAD,FOOBURG,4,14:10ABA,XAD,FOOBURG,5,14:55ABA,XAD,FOOBURG,6,15:30ABA,XAD,FOOBURG,7,16:05ABA,XAD,FOOBURG,8,16:40


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号