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

求助:Python脚本修复JSON文件字符串缺失引号问题

修复缺失引号的无效JSON文件

你的问题在于原始文件不是标准JSON格式,json库只能解析合法JSON,所以直接用它处理无效。可以通过正则表达式修复格式,以下是Python解决方案:

修复思路

  1. 识别冒号后非数字的字符串值,为其添加双引号
  2. 修复同级对象之间缺失的逗号(比如}后直接接下一个"xmusil4_knihy":的情况)

完整Python脚本

import re

def fix_invalid_json(input_file, output_file):
    # 读取原始文件内容
    with open(input_file, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 步骤1:为非数字类型的字符串值添加引号
    # 匹配冒号后非数字开头、且不在大括号/逗号内的内容
    pattern_values = r':\s*(?!\d+)([^,\n{}]+)(?=\s*,|\s*})'
    content = re.sub(pattern_values, r': "\1"', content)
    
    # 步骤2:修复对象之间缺失的逗号
    # 匹配}后直接接"xmusil4_knihy"的情况,添加逗号
    pattern_commas = r'}\s*"xmusil4_knihy":'
    content = re.sub(pattern_commas, r'}, "xmusil4_knihy":', content)
    
    # 保存修复后的内容到输出文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(content)

# 使用示例:替换为你的输入输出文件路径
fix_invalid_json('invalid.json', 'fixed.json')

注意事项

  • 如果你的JSON里还有其他类似的重复键(比如除了xmusil4_knihy之外的其他键),可以修改pattern_commas中的键名,或者用更通用的正则r'}\s*"[^"]+":'匹配所有键名
  • 若字符串值中包含特殊字符(比如引号、反斜杠),需要额外处理,你的示例中没有这类情况,所以当前脚本足够
  • 修复后的JSON存在重复键,严格来说不符合JSON标准(重复键会被后续键覆盖),如果需要处理重复键,建议将其改为数组结构,比如:
    {
      "xmusil4_knihy_list": [
        {"knihy_id": 2, ...},
        {"knihy_id": 4, ...}
      ]
    }
    

内容的提问来源于stack exchange,提问作者Matěj Musil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:51