53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
# 读取原始文件
|
|||
|
|
with open('src/data/expertSupportData.js', 'r', encoding='utf-8') as f:
|
|||
|
|
content = f.read()
|
|||
|
|
|
|||
|
|
# 提取JSON部分(去掉JavaScript变量声明和结尾)
|
|||
|
|
json_start = content.index('{')
|
|||
|
|
json_end = content.rfind('}') + 1
|
|||
|
|
json_content = content[json_start:json_end]
|
|||
|
|
|
|||
|
|
# 解析JSON
|
|||
|
|
data = json.loads(json_content)
|
|||
|
|
|
|||
|
|
# 递归处理所有字符串值
|
|||
|
|
def clean_text(obj):
|
|||
|
|
if isinstance(obj, str):
|
|||
|
|
# 处理转义的双引号 \" -> "
|
|||
|
|
obj = obj.replace('\\"', '"')
|
|||
|
|
# 处理转义的换行符 \\n -> \n (保留真正的换行)
|
|||
|
|
obj = obj.replace('\\n', '\n')
|
|||
|
|
return obj
|
|||
|
|
elif isinstance(obj, dict):
|
|||
|
|
return {k: clean_text(v) for k, v in obj.items()}
|
|||
|
|
elif isinstance(obj, list):
|
|||
|
|
return [clean_text(item) for item in obj]
|
|||
|
|
else:
|
|||
|
|
return obj
|
|||
|
|
|
|||
|
|
# 清理数据
|
|||
|
|
cleaned_data = clean_text(data)
|
|||
|
|
|
|||
|
|
# 生成新的JavaScript文件内容
|
|||
|
|
output = """// 从化工问答内容.json转换的专家支持中心数据
|
|||
|
|
const expertSupportData = """ + json.dumps(cleaned_data, ensure_ascii=False, indent=2) + """;
|
|||
|
|
|
|||
|
|
export default expertSupportData;
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 写入新文件
|
|||
|
|
with open('src/data/expertSupportData_cleaned.js', 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(output)
|
|||
|
|
|
|||
|
|
print("数据清理完成!已生成 expertSupportData_cleaned.js")
|
|||
|
|
print("\n示例内容修复:")
|
|||
|
|
print("原始: 废水处理厂为什么要建\\\"调节池\\\"?")
|
|||
|
|
print("修复后: 废水处理厂为什么要建\"调节池\"?")
|
|||
|
|
print("\n原始: PLC:响应速度快...\\nDCS:更擅长连续过程控制...")
|
|||
|
|
print("修复后: PLC:响应速度快...\nDCS:更擅长连续过程控制...")
|