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

如何将Excel中类字典的损坏长字符串转换为Pandas DataFrame

非标准JSON格式Excel数据转Pandas DataFrame处理方案

核心思路

你手上的数据属于非严格JSON格式,存在分隔符错误、键名缺失双引号、数组格式易被误替换的问题,优先用容错性高的JSON解析工具处理,避免手动正则覆盖不全的问题。

步骤1:安装依赖

执行命令安装需要的库:

pip install demjson3 pandas openpyxl

步骤2:完整处理代码

import pandas as pd
import demjson3
import re

# 1. 读取Excel文件,假设存储JSON的列名为json_col,替换成你实际的列名
df_raw = pd.read_excel("你的文件路径.xlsx")
result_list = []

for raw_str in df_raw["json_col"]:
    # 2. 字符串预处理
    # 去掉首尾多余的引号、前缀(如示例中的1L:)、空白字符
    clean_str = re.sub(r"^.*?'{", "{", str(raw_str).strip())
    clean_str = re.sub(r"}'?$", "}", clean_str)
    # 把所有/替换为,
    clean_str = clean_str.replace("/", ",")
    # 修复infusions字段丢失方括号的问题(你之前替换时可能误删了括号)
    clean_str = re.sub(r"infusions:([\d,]+)", r"infusions:[\1]", clean_str)
    
    # 3. 非严格解析JSON为字典
    try:
        data_dict = demjson3.decode(clean_str)
        result_list.append(data_dict)
    except Exception as e:
        print(f"解析失败的字符串: {clean_str}, 错误: {e}")

# 4. 转换为DataFrame,可只保留你需要的字段
df_result = pd.DataFrame(result_list)[["riskProfile", "initialInvestment", "cashflowDate", "infusions"]]
print(df_result)

可选:不用第三方解析库的正则方案

如果不想安装demjson3,可以用正则给所有键名补双引号,再用标准json库解析:

import json

def add_quotes_to_keys(s):
    # 给键名加双引号
    s = re.sub(r'([\{,])\s*([a-zA-Z0-9_]+)\s*:', r'\1"\2":', s)
    # 给字符串值加双引号(排除数字、true、false、null)
    s = re.sub(r':\s*([a-zA-Z][a-zA-Z0-9_\-\s:.]*)\s*([,\}])', r':"\1"\2', s)
    return s

# 预处理后调用该方法,再用json.loads解析
clean_str = add_quotes_to_keys(clean_str)
data_dict = json.loads(clean_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:18:03