首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将map数组json转换为csv

将map数组json转换为csv
EN

Stack Overflow用户
提问于 2017-09-20 09:40:19
回答 3查看 953关注 0票数 1

大家好,我对蟒蛇很陌生,所以请容忍我。我有一个这种格式的示例json文件。

代码语言:javascript
运行
复制
[{
"5":"5",
"0":"0",
"1":"1"},{
"14":"14",
"11":"11",
"15":"15"},{
"25":"25",
"23":"23",
"22":"22"}]

我想以一种特定的方式将json文件转换为csv。1 map中的所有值--即json中的{} --都应该转换为csv文件(例如FILE_A.csv)。

对于上面的例子,

FILE_A.csv,

代码语言:javascript
运行
复制
DAILY,COUNT
5,5
0,0
1,1

FILE_B.csv,

代码语言:javascript
运行
复制
WEEKLY,COUNT
14,14
11,11
15,15

FILE_C.csv,

代码语言:javascript
运行
复制
MONTHLY,COUNT
25,25
23,23
22,22

在json中只有3张地图。

是否有人建议将json中的3个映射转换为上述结构的3个不同的csv文件的最佳方法?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-20 10:06:06

代码语言:javascript
运行
复制
data_list = [{
"5":"5",
"0":"0",
"1":"1"},{
"14":"14",
"11":"11",
"15":"15"},{
"25":"25",
"23":"23",
"22":"22"}]

temp_dct = { "DAILY": data_list[0], "WEEKLY": data_list[1], "MONTHLY": data_list[2]}
file_name_ord = 65
for k in ["DAILY", "WEEKLY", "MONTHLY"]:
    v = temp_dct[k]
    file_name = "FILE_"+str(chr(file_name_ord))+".csv"
    file_name_ord+=1
    data = k + ","+ "COUNT\n" 
    for inner_k, inner_v in v.items():
        data += inner_k + ","+inner_v+"\n"

    with open(file_name, "w") as f:
        f.write(data)

也试试这个。希望你能得到答案。

票数 0
EN

Stack Overflow用户

发布于 2017-09-20 09:52:46

您可以对所需的所有数据使用一个简单的循环,如下所示:

代码语言:javascript
运行
复制
jsondata = [{
"5":"5",
"0":"0",
"1":"1"},{
"14":"14",
"11":"11",
"15":"15"},{
"25":"25",
"23":"23",
"22":"22"}]

for name, timelapse, data in zip(("A", "B", "C"), 
                                 ("DAILY", "WEEKLY","MONTHLY",), 
                                 jsondata): #get data together
    with open("path/to/your/FILE_{}".format(name), "w") as f:
        f.write("{}, COUNT\n".format(timelapse)) # write header
        f.write("\n".join(",".join((k,v)) for k,v in data.items())) #write data separated by ','

这里有一个实例化

还请看一下csv模块

票数 0
EN

Stack Overflow用户

发布于 2017-09-20 10:24:16

直进式解决方案:

代码语言:javascript
运行
复制
import json, csv    

with open('FILE_A.csv', 'w', newline='') as fa, open('FILE_B.csv', 'w', newline='') as fb, \
     open('FILE_C.csv', 'w', newline='') as fc:

    a_writer, b_writer, c_writer = csv.writer(fa), csv.writer(fb), csv.writer(fc)
    da, db, dc = json.load(open('your.json'))

    a_writer.writerow(('DAILY','COUNT'))
    a_writer.writerows(da.items())

    b_writer.writerow(('WEEKLY','COUNT'))
    b_writer.writerows(db.items())

    c_writer.writerow(('MONTHLY','COUNT'))
    c_writer.writerows(dc.items())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46318530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档