You need to enable JavaScript to run this app. 使用pandas read_json读取本地CoQA JSON数据集报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas read_json读取本地CoQA JSON数据集报错如何解决?

报错原因

出现ValueError: Expected object or value报错但直接读取URL正常,本质是本地读取的内容不是合法JSON结构,常见触发原因如下:

  • 本地文件下载损坏/不完整:下载过程中网络中断、存储异常会导致JSON结构截断,pandas无法解析得到合法对象。
  • 相对路径指向无效:代码运行的当前工作目录和你存放JSON文件的目录不一致,./相对路径找不到目标文件,读取到空内容触发解析报错。
  • 编码/压缩格式不匹配:部分下载渠道会自动对数据集做gzip压缩,或者存储时编码不是UTF-8,pandas默认参数无法正确解码文件内容。
验证方法

可以依次执行以下代码定位问题:

  1. 验证文件路径是否正确
import os
# 打印当前代码运行的工作目录
print("当前工作目录:", os.getcwd())
# 检查目标文件是否存在
print("文件是否存在:", os.path.exists("./coqa-train-v1.0.json"))
  1. 验证JSON文件合法性
import json
with open("./coqa-train-v1.0.json", "r", encoding="utf-8") as f:
    try:
        data = json.load(f)
        print("JSON文件合法,顶层键:", list(data.keys()))
    except Exception as e:
        print("JSON文件损坏:", e)
解决方案
  • 路径错误:将JSON文件移动到打印出的当前工作目录下,或者替换相对路径为文件的绝对路径读取,示例:
# Windows示例,注意路径用斜杠或者双反斜杠
coqa = pd.read_json("C:/Users/xxx/Downloads/coqa-train-v1.0.json")
# Linux/macOS示例
coqa = pd.read_json("/home/xxx/Downloads/coqa-train-v1.0.json")
  • 文件损坏:重新下载数据集,校验文件大小,官方发布的coqa-train-v1.0.json大小约为55MB,大小偏差过大说明下载未完成。
  • 格式不匹配:读取时手动指定编码和压缩参数:
coqa = pd.read_json("./coqa-train-v1.0.json", encoding="utf-8", compression="infer")
  • 替代方案:如果始终无法解决本地JSON解析问题,可以首次读取官方URL后将数据存为pickle格式,后续直接读取本地pickle文件即可,不会出现解析异常:
# 首次运行拉取数据并存本地
import pandas as pd
coqa = pd.read_json('http://downloads.cs.stanford.edu/nlp/data/coqa/coqa-train-v1.0.json')
coqa.to_pickle("coqa_train.pkl")
# 后续运行直接读本地文件
coqa = pd.read_pickle("coqa_train.pkl")

内容的提问来源于stack exchange,提问作者Max Be

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:09:03