我有一个4gb的json文件,我需要将其转换为csv,我尝试了以下代码:
import json
import csv
csv.field_size_limit(10**9)
With open('name.json') as json_file:
jsondata = json.load(json_file)
data_file = open('name.csv', 'w', newline='')
csv_writer = csv.writer(data_file)
count = 0
for data in jsondata:
if count == 0:
header = data.keys()
csv_writer.writerow(header)
count += 1
csv_writer.writerow(data.values())
data_file.close()
尝试了相同代码的许多变体。总是得到错误json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 3756)
需要逐行读取JSON并将数据写入CSV的代码
UPD:pastebin上此文件的三行示例
3条答案
按热度按时间q9yhzks01#
正如Michael Butscher在评论中提到的,你可能有一个JSON Lines文件:多个有效的JSON对象,一行接一行。我说可能是因为你对问题的描述和错误代码指向JSON行,但是pastebin链接中的(格式化的)JSON已经缩进,因此不再是“行”了。
尽管如此,正如Michael所说,你可以像平常一样打开文件,遍历行,并加载每行(作为字符串):
从那里,你可以决定如何将其放入CSV,也许是这样的:
这里有一个完整的建议:
给定这个输入JSON行:
我得到这个CSV:
bvpmtnay2#
您可以将JSON读取为Pandas DataFrame,并将加载的DataFrame保存为CSV。
您可以参考https://pandas.pydata.org/docs/reference/api/pandas.read_json.html以获得完整的文档。
只要JSON没有语法错误,这就可以工作。
j0pj023g3#
你能试试这个吗?