(Python 3.5) 我试图将一个大型用户review.json文件(1.3gb)解析为python并转换为.csv文件。我曾尝试在线寻找一个简单的转换器工具,其中大多数都接受最大1Mb的文件大小或超级昂贵。 因为我对python很新,我想我会问2个问题。
这样做是否可行/有效,还是应该寻找其他方法?
我尝试了以下代码,它只是在我的.json doc中读取并写入前342行,然后返回错误。
块引用 文件" C:\ Anaconda3 \ lib \ json__init __。py",第319行,在载入中 return _default_decoder.decode(s)
文件" C:\ Anaconda3 \ lib \ json \ decoder.py",第342行,解码 引发JSONDecodeError("额外数据",s,结束) JSONDecodeError:额外数据
这是使用
的代码import csv
import json
infile = open("myfile.json","r")
outfile = open ("myfile.csv","w")
writer = csv.writer(outfile)
for row in json.loads(infile.read()):
writer.writerow(row)
我的.json示例:
链接到Json
的一小部分我的想法是它与我的for循环相关的某种类型的错误,使用json.loads ......但我对此知之甚少。是否可以创建字典{}并仅转换值" user_id"," stars"," text"?或者我在做梦。
任何建议或批评都表示赞赏。
答案 0 :(得分:0)
这不是JSON文件;这是一个包含各个JSON行的文件。你应该分别解析每一行。
for row in infile:
data = json.loads(row)
writer.writerow(data)
答案 1 :(得分:0)
有时它并不像每行输入都有一个JSON定义那么容易。 JSON定义可以分布在多行上,并且不一定容易确定哪些是逐行读取的开始和结束括号(例如,如果存在包含大括号或嵌套结构的字符串)。
答案是使用raw_decode
的{{1}}方法一次从文件中获取JSON定义。这适用于任何一组连接的有效JSON定义。我在这里的回答中对此进行了进一步描述:Importing wrongly concatenated JSONs in python