所以我有一个CSV文件,以后可以将其转换为JSON文件。但是我想做的是我想为每个新的json对象保存到一个新的json文件。意思是这样的:
{
"first_name": "Hello",
"last_name": "World",
"color": "black"
},
{
"first_name": "Stack",
"last_name": "Overflow",
"color": "Red"
}
如何将其更改为从CSV到JSON的格式,是将其创建为dict,在其中具有CSV格式以及基于“ first_name”,“ last_name_”和颜色创建的字段名称。
它看起来像这样:
jsonfile = open('newfilejson.json', 'w')
fieldnames = ("first_name","last_name","color")
reader = csv.DictReader(csvfile, fieldnames)
for row in reader:
jsonfile.write('"first_name": "' + row['first_name'] + '",\n')
jsonfile.write('"last_name": "' + row['last_name'] + '",\n')
jsonfile.write('"color": "' + row['color'] + '",\n')
但是这基本上只会保存到一个文件中,我的问题是:
我怎样才能使它每次从for循环中完成一个“行”以创建一个新的json文件,该文件包含for循环中的内容(带有写入),然后每当有新内容时,就创建一个新的json文件。基本上意味着每次完成一行后,创建新的json吗?
答案 0 :(得分:2)
您可以使用上下文管理器为每一行打开并写入新的json文件:
fieldnames = ("first_name","last_name","color")
reader = csv.DictReader(csvfile, fieldnames)
for row in reader:
with open('%s_%s.json' % (row['first_name'], row['last_name']), 'w') as jsonfile:
jsonfile.write('"first_name": "' + row['first_name'] + '",\n')
jsonfile.write('"last_name": "' + row['last_name'] + '",\n')
jsonfile.write('"color": "' + row['color'] + '",\n')
答案 1 :(得分:1)
您可以尝试以下方法:
for row in reader:
filename = 'a_file_{}'.format(row['first_name'])
with open(filename, 'w') as f:
f.write('"first_name": "' + row['first_name'] + '",\n')
f.write('"last_name": "' + row['last_name'] + '",\n')
f.write('"color": "' + row['color'] + '",\n')
您只需要决定如何命名这些文件。我的示例使用文件名中的名字。