【问题标题】:How to open .ndjson file in Python?如何在 Python 中打开 .ndjson 文件?
【发布时间】:2020-12-09 13:33:08
【问题描述】:

我有 .ndjson 文件,它有 20GB,我想用 Python 打开。文件太大了,所以我找到了一种方法,可以用一个在线工具将它分成 50 个和平。这是工具:https://pinetools.com/split-files

现在我得到一个文件,扩展名为 .ndjson.000(我不知道那是什么)

我正在尝试以 json 或 csv 文件的形式打开它,以便在 pandas 中读取它,但它不起作用。 你知道如何解决这个问题吗?

import json
import pandas as pd

第一种方法:

df = pd.read_json('dump.ndjson.000', lines=True)

错误:ValueError: Unmatched ''"' when when decoding 'string'

第二种方法:

with open('dump.ndjson.000', 'r') as f:

     my_data = f.read() 

print(my_data)

错误:json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 104925061 (char 104925060)

我认为问题在于我的文件中有一些表情符号,所以我不知道如何编码?

【问题讨论】:

    标签: python json pandas parsing ndjson


    【解决方案1】:

    我认为 pandas.read_json 无法正确处理 ndjson。

    根据这个issue你可以做某事。喜欢这样阅读。

    import ujson as json
    import pandas as pd
    
    records = map(json.loads, open('/path/to/records.ndjson'))
    df = pd.DataFrame.from_records(records)
    

    P.S:此代码的所有学分都来自 Github Issue 的 KristianHolsheimer

    【讨论】:

    • 在这一行: df = pd.DataFrame.from_records(records) ,我得到这个错误:ValueError: Unmatched ''"' when解码'string'时
    • 我是否需要添加任何编码,因为我的文件中可能有一些表情符号或特殊字符?
    • 关于这个的另一个问题,有没有办法在我上传这个文件时添加某种进度条,因为太大了,我想知道它还剩下多少时间或多少文件已上传?
    【解决方案2】:

    ndjson 现在支持开箱即用,带有参数lines=True

    import pandas as pd
    
    df = pd.read_json('/path/to/records.ndjson', lines=True)
    df.to_json('/path/to/export.ndjson', lines=True)
    

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 1970-01-01
      • 2022-12-12
      • 2021-06-21
      • 1970-01-01
      • 2020-10-09
      • 2017-12-30
      • 2011-03-15
      • 2020-05-05
      相关资源
      最近更新 更多