首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将CSV解析为JSON [Python]

将CSV解析为JSON [Python]
EN

Stack Overflow用户
提问于 2018-06-29 03:46:41
回答 1查看 62关注 0票数 -1

我有一个csv文件,其中包含以下明文:

代码语言:javascript
复制
h1,,,h2,,,h3,,,h4,,,h5,,,h6,,
s1,s2,s3,s1,s2,s3,s1,s2,s3,s1,s2,s3,s1,s2,s3,s1,s2,s3
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9

第一行(h1,h2,...,h6)是主头文件,第二行(s1,...,s2)是子头文件,其值为1- 9。

代码语言:javascript
复制
#!/usr/bin/env python

import csv
import json
import os
from os import path
import sys

arg = sys.argv[1]

if len(sys.argv) != 2:
    print 'invalid number of arguments'
    sys.exit()

with open(arg, "r") as sheet:
    s = csv.reader(sheet)
    for row in s:
        print row

我希望我的json字符串看起来像这样:

代码语言:javascript
复制
{
    "h1": {
        "s1": [1, 2, ..., 9],
        "s2": [1, 2, ..., 9],
        "s3": [1, 2, ..., 9]
    },
    # etc
}

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-29 03:59:25

代码语言:javascript
复制
import collections

with open(arg, "r") as sheet:
    s = csv.reader(sheet)
    main_header = next(s)
    sub_header = next(s)
    result = {}
    for row in s:
        aheader = None
        for main, sub, value in zip(main_header, sub_header, row):
            if not main:
                main = aheader
            result.setdefault(main, {}).setdefault(sub, []).append(value)
            aheader = main

print (result)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51090299

复制
相关文章

相似问题

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