gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:43:19 26 4
gpt4 key购买 nike

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

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"

最佳答案

您想要的输出的问题是它不是有效的 json 文档;这是一个 json 文档流!

没关系,如果它是您需要的,但这意味着对于您想要在输出中的每个文档,您必须调用 json.dumps

由于您要分隔文档的换行符不包含在这些文档中,因此您必须自己提供它。所以我们只需要将循环从对 json.dump 的调用中拉出来,并为每个写入的文档插入换行符。

import csv
import json

csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')

fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
json.dump(row, jsonfile)
jsonfile.write('\n')

关于python - 如何将 CSV 文件转换为多行 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19697846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com