如何使用Python将格式异常的类JSON文件转换为CSV?
格式异常类JSON转CSV的解决方案
你的文件核心问题是存在不符合JSON规范的语法(比如"type": b里的b未加引号),直接用pandas读取会报错,得先预处理修复语法,再完成转换,具体步骤如下:
1. 预处理修复JSON语法错误
用正则表达式批量替换所有未加引号的标识符,将其转为合法的JSON字符串:
import re # 读取原文件内容 with open('your_input_file.txt', 'r', encoding='utf-8') as f: content = f.read() # 匹配"key": 标识符的格式,给标识符加上双引号 fixed_content = re.sub(r'("\w+"):\s*([a-zA-Z_]\w*)', r'\1: "\2"', content) # 写入修复后的临时文件 with open('fixed_temp.json', 'w', encoding='utf-8') as f: f.write(fixed_content)
2. 用pandas读取并导出CSV
修复后的文件可被pandas正常识别,直接将嵌套的pattern字段转为字符串存储(方便CSV格式保留结构):
import pandas as pd # 读取修复后的JSON文件 df = pd.read_json('fixed_temp.json') # 将嵌套的pattern对象转为字符串格式 df['pattern'] = df['pattern'].apply(str) # 导出为CSV df.to_csv('output.csv', index=False, encoding='utf-8')
特殊情况备选方案
如果文件还有其他复杂的格式异常(比如未闭合括号、特殊字符逃逸问题),可以用专门兼容非严格JSON的demjson库:
import demjson import pandas as pd # 读取原文件 with open('your_input_file.txt', 'r', encoding='utf-8') as f: content = f.read() # 解析非严格JSON data = demjson.decode(content) # 转DataFrame并导出 df = pd.DataFrame(data) df['pattern'] = df['pattern'].apply(str) df.to_csv('output.csv', index=False, encoding='utf-8')
注:使用前需先安装库:pip install demjson
内容的提问来源于stack exchange,提问作者Nip
相关产品推荐
相关产品推荐

