这是我的代码,非常简单的东西...import csvimport jsoncsvfile = 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"
3 回答

慕仙森
TA贡献1827条经验 获得超8个赞
你可以试试这个
import csvmapper
# how does the object look
mapper = csvmapper.DictMapper([
[
{ 'name' : 'FirstName'},
{ 'name' : 'LastName' },
{ 'name' : 'IDNumber', 'type':'int' },
{ 'name' : 'Messages' }
]
])
# parser instance
parser = csvmapper.CSVParser('sample.csv', mapper)
# conversion service
converter = csvmapper.JSONConverter(parser)
print converter.doConvert(pretty=True)
编辑:
更简单的方法
import csvmapper
fields = ('FirstName', 'LastName', 'IDNumber', 'Messages')
parser = CSVParser('sample.csv', csvmapper.FieldMapper(fields))
converter = csvmapper.JSONConverter(parser)
print converter.doConvert(pretty=True)
添加回答
举报
0/150
提交
取消