Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Mongoexport导出无效的json文件_Python_Json_Mongodb_Csv_Twitter - Fatal编程技术网

Python Mongoexport导出无效的json文件

Python Mongoexport导出无效的json文件,python,json,mongodb,csv,twitter,Python,Json,Mongodb,Csv,Twitter,我从twitterapi收集了一些tweet并将其存储到mongodb中,我尝试将数据导出到JSON文件中,但没有任何问题,直到我尝试制作一个python脚本来读取JSON并将其转换为csv。我的代码出现此回溯错误: json.decoder.JSONDecodeError: Extra data: line 367 column 1 (char 9745) 所以,在互联网上翻找之后,我被要求在一个在线验证器中检查实际的JSON数据,我做到了。这给了我一个错误: Multiple JSON r

我从twitterapi收集了一些tweet并将其存储到mongodb中,我尝试将数据导出到JSON文件中,但没有任何问题,直到我尝试制作一个python脚本来读取JSON并将其转换为csv。我的代码出现此回溯错误:

json.decoder.JSONDecodeError: Extra data: line 367 column 1 (char 9745)
所以,在互联网上翻找之后,我被要求在一个在线验证器中检查实际的JSON数据,我做到了。这给了我一个错误:

Multiple JSON root elements
从网站

以下是文件开头/结尾的第一个/第二个对象的图片:

或者是数据的链接

现在,问题是,我还没有在互联网上找到任何关于如何处理错误的信息。我不确定这是否是我收集、导出的数据的错误,或者我只是不知道如何使用它

我对这些推文的最终目的是制作一个网络图。我在看Networkx或Gephi,这就是为什么我想得到一个csv文件

  • 罗伯特·莫斯卡尔是对的。如果您可以在源代码处解决这个问题,并在使用mongoexport时使用--jsonArray标志,那么我想这将使问题变得更容易。如果你无法从源头解决问题,请阅读以下几点
  • 下面的代码将从给定文件中提取各个json对象,并将它们转换为python字典
  • 然后,您可以将CSV逻辑应用于每个单独的词典
  • 如果您使用的是csv模块,那么我会说使用unicodecsv模块,因为它将处理json对象中的unicode数据


  • 如果要使用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\u normalize()方法。

    回复有点晚,我不确定在发布此问题时它是否可用。无论如何,现在有一种简单的方法可以导入
    mongoexport
    json数据,如下所示:

    df = pd.read_json(filename, lines=True)
    
    

    mongoexport
    将每一行作为json对象本身提供,而不是将整个文件作为json提供。

    详细说明@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文件


    我很惊讶。你能发布导出的json文件的开头和结尾吗?@RobertMoskal我用文件的图片更新了原始帖子。stackoverflow不允许我发布代码,因为数据中的某些链接被缩短。请将示例数据上载到某个文件共享网站并共享该链接。@MohammadYusufGhazi这里有一个指向数据的链接,该链接太大,无法复制pastebin。那条线有你需要的答案。
    mongoexport --collection=somecollection --db=somedb --jsonArray --out=validfile.json