更新: 我正在将我的csv文件(例如具有19条奇数行的19-01-2018.csv)转换为json文件,即19-01-2018.json
要求是,创建的json文件每个必须分成30行。因此,我的目标文件将类似于19-01-2018_1.json,19-01-2018_2.json等。
源json看起来像这样:
创建的每个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
答案 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')