【发布时间】:2013-11-10 22:43:42
【问题描述】:
这是我的代码,非常简单的东西......
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"
【问题讨论】:
-
我不确定你的代码是否完全如你所说;它应该产生
[{..row..},{..row..},...]而不是{..row..}{..row..}..。也就是说,输出看起来会是一个json对象的json数组,而不是未连接的json对象流。