簡體   English   中英

如何打開Python中的.ndjson文件?

[英]How to open .ndjson file in Python?

我有一個 20GB 的.ndjson文件,我想用 Python 打開它。文件太大了,所以我找到了一種方法,可以用一個在線工具將它分成 50 個和平文件。 這是工具: https://p.netools.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)

我認為問題是我的文件中有一些表情符號,所以我不知道如何對它們進行編碼?

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)

我認為 pandas.read_json 無法正確處理 ndjson。

根據這個問題你可以做某事。 像這樣閱讀它。

import ujson as json
import pandas as pd

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

PS:此代碼 go 的所有學分來自 Github Issue 的 KristianHolsheimer

ndjson (newline delimited) json 是一種 json-lines 格式,即每一行都是一個 json。它非常適合缺乏剛性結構('non-sql')的數據集,其中文件大小足以保證多個文件.

您可以使用 pandas:

import pandas as pd
data = pd.read_json('dump.ndjson.000', lines=True)

如果您的 json 字符串不包含換行符,您也可以使用:

import json
with open("dump.ndjson.000") as f:
    data = [json.loads(l) for l in f.readlines()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM