You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python逐行读取含多段JSON的文件提取指定键值并生成DataFrame的问题

问题原因

你当前的代码存在两个核心问题:

  1. 你读取的文件内容是纯字符串,直接遍历字符串拿到的是单个字符,不可能通过resp0['value']取到数据
  2. 你的文件不是标准的单JSON结构,是多段respX = {JSON}格式的Python赋值语句集合,不能直接用JSON解析工具读取整个文件

实现步骤

方案1:正则提取JSON(推荐,安全性高)

用正则匹配所有响应的JSON内容,解析后合并value数组,代码如下:

import json
import re
import pandas as pd

all_values = []
file_path = r'C:\Users\path\abc.json'

# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
    content = f.read()

# 匹配所有respX = 后的JSON对象
json_pattern = re.compile(r'resp\d+\s*=\s*(\{.*?\})(?=\s*resp\d|\Z)', re.DOTALL)
json_str_list = json_pattern.findall(content)

for json_str in json_str_list:
    # 解析单页响应
    resp = json.loads(json_str)
    # 合并当前页的value到总列表
    all_values.extend(resp.get('value', []))

# 直接转DataFrame,不需要先生成你要的嵌套结构也可以
df = pd.DataFrame(all_values)

# 如果需要你要求的最终JSON格式,可以按以下生成
final_json = {"value": all_values}

方案2:exec执行赋值语句(简单,适合自用文件)

如果你确定文件是你自己生成的、没有恶意代码,可以直接执行文件里的赋值语句,遍历变量拿数据:

import pandas as pd

all_values = []
file_path = r'C:\Users\path\abc.json'
var_pool = {}

with open(file_path, 'r', encoding='utf-8') as f:
    content = f.read()

# 执行所有赋值语句,变量会存在var_pool中
exec(content, globals(), var_pool)

# 遍历所有resp开头的响应变量
for var_name, resp in var_pool.items():
    if var_name.startswith('resp'):
        all_values.extend(resp.get('value', []))

df = pd.DataFrame(all_values)

后续操作

拿到DataFrame后,你可以直接用pandas的to_sql方法对接数据库,完成数据导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:15:08