猿问

如何将CSV文件转换为多行JSON?

这是我的代码,非常简单的东西...


import csv

import json


csvfile = open('file.csv', 'r')

jsonfile = open('file.json', 'w')


fieldnames = ("FirstName","LastName","IDNumber","Message")

reader = csv.DictReader( csvfile, fieldnames)

out = json.dumps( [ row for row in reader ] )

jsonfile.write(out)

声明一些字段名称,阅读器使用CSV读取文件,并使用字段名称将文件转储为JSON格式。这是问题所在...


CSV文件中的每个记录都在不同的行上。我希望JSON输出采用相同的方式。问题是它把所有的东西都丢在一条长长的长线上。


我试过使用类似的for line in csvfile:代码,然后在该代码下面运行我的代码,reader = csv.DictReader( line, fieldnames)该代码循环遍历每一行,但它在一行上执行整个文件,然后在另一行上遍历整个文件...一直持续到行数结束。


有任何纠正建议吗?


编辑:澄清一下,目前我有:(第1行的每条记录)


[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]

我要寻找的是:(2条记录,每条2行)


{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}

{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}

不是每个单独的字段缩进/在单独的行上缩进,而是每个记录在它自己的行上。


一些样本输入。


"John","Doe","001","Message1"

"George","Washington","002","Message2"


扬帆大鱼
浏览 692回答 3
3回答

慕仙森

你可以试试这个import csvmapper# how does the object lookmapper = csvmapper.DictMapper([   [      { 'name' : 'FirstName'},     { 'name' : 'LastName' },     { 'name' : 'IDNumber', 'type':'int' },     { 'name' : 'Messages' }  ] ])# parser instanceparser = csvmapper.CSVParser('sample.csv', mapper)# conversion serviceconverter = csvmapper.JSONConverter(parser)print converter.doConvert(pretty=True)编辑:更简单的方法import csvmapperfields = ('FirstName', 'LastName', 'IDNumber', 'Messages')parser = CSVParser('sample.csv', csvmapper.FieldMapper(fields))converter = csvmapper.JSONConverter(parser)print converter.doConvert(pretty=True)
随时随地看视频慕课网APP

相关分类

Python
我要回答