JSON文件含特殊符号无法解码,如何清除这些符号?
清理JSON文件首尾特殊符号的实用方案
方法1:Python脚本批量处理
适合大文件或需要自动化处理的场景:
- 核心思路:用正则匹配出所有完整的JSON对象(支持嵌套大括号),过滤掉前后的垃圾符号,再保存为干净的JSON文件。
- 直接用下面的代码(替换文件名即可):
import re import json # 读取带垃圾符号的原始文件 with open('dirty_json.txt', 'r', encoding='utf-8', errors='ignore') as f: raw_content = f.read() # 匹配所有完整的JSON结构(支持嵌套{}) json_pattern = re.compile(r'\{(?:[^{}]|(?R))*\}') valid_json_pieces = json_pattern.findall(raw_content) # 保存清理后的文件 with open('cleaned_json.json', 'w', encoding='utf-8') as f: if len(valid_json_pieces) == 1: # 单个JSON对象直接格式化保存 json.dump(json.loads(valid_json_pieces[0]), f, indent=2) else: # 多个对象整理成JSON数组 json.dump([json.loads(piece) for piece in valid_json_pieces], f, indent=2)
- 小提示:
errors='ignore'能跳过那些无法识别的乱码字节,正则表达式专门针对嵌套大括号设计,不会提取不完整的JSON片段。
方法2:Notepad++手动替换(小文件快速处理)
如果文件不大,手动操作更直接:
- 用Notepad++打开目标文件,按下
Ctrl+H打开查找替换窗口 - 勾选「正则表达式」模式,取消「.匹配换行符」选项
- 查找目标输入:
.*?(\{(?:[^{}]|(?R))*\}).*? - 替换为输入:
$1\n - 点击「全部替换」,所有合法的JSON内容会被提取出来,垃圾符号直接被删除
- 如果是多个JSON对象,手动在首尾加
[和],对象之间加逗号,就能组成合法的JSON数组
额外提醒
- 这些特殊符号一般是传输过程中混入的冗余标识或错误字节,只要提取出的JSON结构完整,就能正常解码。
- 处理完可以用Python的
json.loads验证,确保没有语法错误。
内容的提问来源于stack exchange,提问作者Wingmore
相关产品推荐
相关产品推荐

