根据行数拆分JSON文件

时间:2019-02-14 10:23:51

标签: python json csv

更新: 我正在将我的csv文件(例如具有19条奇数行的19-01-2018.csv)转换为json文件,即19-01-2018.json

要求是,创建的json文件每个必须分成30行。因此,我的目标文件将类似于19-01-2018_1.json,19-01-2018_2.json等。

源json看起来像这样:

enter image description here

创建的每个json文件都需要进一步拆分为每行30行的单独json,因为我需要提取到Azure且存在大小限制。

以下是我用于将csv转换为json的代码。我希望将json进一步分成每个30行的json。

for i in files:
    csvfile = open(path+i, 'r')
    jsonfile = open(output+i.split('.')[0]+'.json', 'w')
    reader = csv.DictReader(csvfile)
    for row in reader:
        json.dump(row, jsonfile)
        jsonfile.write('\n') 

任何帮助将不胜感激。

谢谢, Shyam

1 个答案:

答案 0 :(得分:2)

将每行追加到一个列表中,当列表大小达到30时,将其转储到文件中。

for i in files:
    out_index = 0
    with open(path+i, 'r') as csvfile
        reader = csv.DictReader(csvfile)
        rowlist = []
        for row in reader:
            rowlist.append(row)
            if len(rowlist) == 30:
                dump_list_to_json(rowlist, path+i, out_index)
                rowlist = []
                out_index += 1
        # dump the last batch
        if len(rowlist) > 0:
            dump_list_to_json(rowlist, path+i, out_index)

def dump_list_to_json(rowlist, csv_filename, index):
    json_filename = csv_filename.replace('.csv', '_'+index+'.csv')
    with open(json_filename, 'w') as jsonfile:
        json.dump(rowlist, jsonfile);
        jsonfile.write('\n')