gpt4 book ai didi

python - `dask.bag` 读取多行json数组时出现JSONDecodeError

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:13 29 4
gpt4 key购买 nike

当使用 dask.bag 读取 json 文件时,如果文件中的 json 是多行,我会收到 JSONDecodeError

import json
import dask.bag as db

db.read_text('single-line.json').map(json.loads).compute()
[[{'a': 'b'}, {'c': 'd'}]]

db.read_text('multi-line.json').map(json.loads).compute()
JSONDecodeError: Expecting value: line 2 column 1 (char 2)

以下是示例文件:

单行

[{"a": "b"}, {"c": "d"}]

多行

[
{"a": "b"},
{"c": "d"}
]

这是一个错误还是我遗漏了什么?

还值得注意的是,我可以仅使用标准库读取多行文件

with open('multi-line.json') as f:
data = f.read()
print(json.loads(data))

[{'a': 'b'}, {'c': 'd'}]

最佳答案

read_text 函数将文件的每一行解释为单独的元素。因此,您的包的元素如下所示:

['[', '{"a": "b"}', '{"c": "d"}', ']']

对其中某些元素调用 json.loads 将失败。我怀疑如果你的数据是 JSON 行分隔的,你会过得更好。如果你有很多这样的 json 文件,那么你也可以使用 dask.delayed 并行化。

关于python - `dask.bag` 读取多行json数组时出现JSONDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44889526/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com