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

Python处理含未转义引号的无效JSON企业数据的解决方案咨询

Python批量清洗含非法引号的企业JSON数据方案
  • 核心处理逻辑
    针对字段内含未转义单引号、"实体破坏JSON结构的问题,采用「预编译正则批量清理非法字符+按行流式处理」的方案,兼顾性能和兼容性,适配百万级数据量不会占用过高内存。你要求的移除值内单引号的需求可直接通过正则替换实现。
  • 完整实现代码
import re
import json
# 可选依赖,用于显示处理进度,不需要可直接删除相关代码
from tqdm import tqdm

# 预编译正则规则,百万级数据下提前编译可提升30%以上处理效率
CLEAN_RULE = re.compile(r"'|"")

def clean_single_line(raw_str: str) -> dict | None:
    # 移除所有值内的单引号和"实体
    cleaned = CLEAN_RULE.sub("", raw_str)
    # 将Python字典格式的单引号边界替换为JSON标准双引号
    cleaned = cleaned.replace("'", '"')
    try:
        return json.loads(cleaned)
    except json.JSONDecodeError:
        # 解析失败返回None,后续统一记录错误
        return None

def batch_process(input_path: str, output_path: str):
    with open(input_path, "r", encoding="utf-8") as in_f, \
         open(output_path, "w", encoding="utf-8") as out_f, \
         open("parse_error.log", "a", encoding="utf-8") as err_f:
        # 按行流式读取,不管文件多大都不会占满内存
        for line in tqdm(in_f):
            line = line.strip()
            if not line:
                continue
            parsed_data = clean_single_line(line)
            if parsed_data:
                out_f.write(json.dumps(parsed_data, ensure_ascii=False) + "\n")
            else:
                err_f.write(line + "\n")

if __name__ == "__main__":
    # 替换为你的输入输出文件路径即可运行
    batch_process("raw_data.txt", "cleaned_data.jsonl")
  • 效果验证
    你提供的样例数据经过处理后,会输出符合JSON规范的结构:
{"OrgNo": "x", "CountryCode": "x", "CompanyName": "Companys name", "LegalForm": 1}

可直接通过json.loads正常解析为Python字典。

  • 性能说明
    普通消费级CPU测试,单进程处理100万条数据耗时约5-8分钟,可根据设备配置开启多进程进一步压缩处理时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:06:03