我有一个csv文件,其中包含以下明文:
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。
#!/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字符串看起来像这样:
{
"h1": {
"s1": [1, 2, ..., 9],
"s2": [1, 2, ..., 9],
"s3": [1, 2, ..., 9]
},
# etc
}
有什么建议吗?
发布于 2018-06-29 03:59:25
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)
https://stackoverflow.com/questions/51090299
复制相似问题