我从twitter API收集了一些推文并将其存储到mongodb,我尝试将数据导出到JSON文件并且没有任何问题,直到我尝试制作python脚本来读取JSON并转换它到csv。我的代码出现了这个回溯错误:
json.decoder.JSONDecodeError: Extra data: line 367 column 1 (char 9745)
所以,在互联网上挖掘之后,我被指向检查在线验证器中的实际JSON数据,我做了。这给了我错误:
Multiple JSON root elements
来自网站https://jsonformatter.curiousconcept.com/ 的
或指向数据here
的链接现在,问题是,我没有在互联网上找到如何处理该错误的任何内容。我不确定我收集,导出的数据是否有错误,或者我不知道如何使用它。
我对这些推文的最终结果是制作网络图。我正在寻找Networkx或Gephi,这就是为什么我想获得一个csv文件。
答案 0 :(得分:2)
import json
with open('path_to_your_json_file', 'rb') as infile:
json_block = []
for line in infile:
json_block.append(line)
if line.startswith('}'):
json_dict = json.loads(''.join(json_block))
json_block = []
print json_dict
如果您想使用pandas将其转换为CSV,可以使用以下代码:
import json, pandas as pd
with open('path_to_your_json_file', 'rb') as infile:
json_block = []
dictlist=[]
for line in infile:
json_block.append(line)
if line.startswith('}'):
json_dict = json.loads(''.join(json_block))
dictlist.append(json_dict)
json_block = []
df = pd.DataFrame(jsonlist)
df.to_csv('out.csv',encoding='utf-8')
如果要展平json对象,可以使用pandas.io.json.json_normalize()方法。
答案 1 :(得分:1)
详细说明@MYGz建议使用--jsonArray
您的帖子未显示如何从mongo导出数据。如果通过终端使用以下命令,将从mongodb获取有效的json:
mongoexport --collection=somecollection --db=somedb --jsonArray --out=validfile.json
分别用目标集合,目标数据库和所需的输出文件名替换somecollection
,somedb
和validfile.json
。
以下内容:mongoexport --collection=somecollection --db=somedb --out=validfile.json
...将不会为您提供所需的结果,因为:
默认情况下,mongoexport会为每个数据库使用一个JSON文档写入数据 MongoDB文件。 Ref
答案 2 :(得分:0)
回复有点晚,我不确定此问题发布的文件中是否可用。无论如何,现在有一种简单的方法可以导入mongoexport
json数据,如下所示:
df = pd.read_json(filename, lines=True)
mongoexport
将每一行作为json对象本身提供,而不是将整个文件作为json提供。