csv to json with python, json in rows



我想用Python将CSV转换为一组JSON对象,以行格式。

我在下面尝试了这个脚本,从几个 SO 答案中组合在一起,但这种格式是这样的:

{
   key:'value'
},
{
   key:'value'
} // etc

我想将其格式化为:

{ key, 'value'},
{ key, 'value'}, // etc

我尝试了这里建议的几种插入换行符的方法,但到目前为止都没有奏效。

脚本如下:

import sys, getopt
import csv
import json

CSV_PATH = 'path/file.csv'
JSON_PATH = 'path/demo.json'
csv_file = csv.DictReader(open(CSV_PATH, 'r'))
json_list = []
for row in csv_file:
   json_list.append(row )
file(JSON_PATH, 'w').write(json.dumps(json_list, indent=4, separators=(' ,')  ))

我的CSV很简单:

SUM_F   SUM_I   SUM_P   SUM_PI  SUM_Bt  SUM_BI  SUM_M   SUM_MI  Year    Month
15       3963     14      993    0      91      1      2879     2009       1

等。。

编辑:我在另一篇文章的评论中收到了这个建议:

for x in json_list: print json.dumps(x)

这将打印我正在寻找的格式,但我还没有弄清楚如何将其写入 json 文件。

import csv
import json
CSV_PATH = 'file.csv'
JSON_PATH = 'demo.json'
with open(CSV_PATH, 'r') as csv_file:
    reader = csv.DictReader(csv_file)
    with open(JSON_PATH, 'w') as json_file:
        for row in reader:
            json_file.write(json.dumps(row) + 'n')

str(row)给出了错误的引号,请不要使用它。您将无法使用 json 读取文件。

首先,CSV文件的格式不正确,我不得不重新格式化文件.csv看起来像:

SUM_F,SUM_I,SUM_P,SUM_PI,SUM_Bt,SUM_BI,SUM_M,SUM_MI,Year,Month
15,3963,14,993,0,91,1,2879,2009,1
3,4,5,6,0,971,1,8,9,10

为了使它工作 - 我不确定这是令牌之间的空格数量不均匀还是其他原因。

其次,我修改了代码:

import sys, getopt
import csv
import json

CSV_PATH = '/path/file.csv'
JSON_PATH = '/path/demo.json'
csv_file = csv.DictReader(open(CSV_PATH, 'r'))
f = file(JSON_PATH, 'w')
for row in csv_file:
    f.write(str(row)+"n")

结果(文件(如下所示:

{'SUM_I': '3963', 'SUM_M': '1', 'SUM_BI': '91', 'Month': '1', 'SUM_MI': '2879', 'SUM_F': '15', 'Year': '2009', 'SUM_Bt': '0', 'SUM_P': '14', 'SUM_PI': '993'}
{'SUM_I': '4', 'SUM_M': '1', 'SUM_BI': '971', 'Month': '10', 'SUM_MI': '8', 'SUM_F': '3', 'Year': '9', 'SUM_Bt': '0', 'SUM_P': '5', 'SUM_PI': '6'}

最新更新