为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2019-11-11 10:32:32
这是我的代码,非常简单的东西...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)


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 691 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信