Files
online_sys/frontend_大健康/fix_multiline_strings.py
KQL a7242f0c69 Initial commit: 教务系统在线平台
- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸
- 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB
- 配置完善的.gitignore文件

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-12 18:16:55 +08:00

139 lines
5.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import json
def fix_multiline_strings_in_js():
"""修复JS文件中的多行字符串问题"""
# 读取文件
with open('src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f:
content = f.read()
# 查找所有 "original": "..." 和 "modified": "..." 的模式
# 使用更精确的正则表达式来匹配这些字符串
def replace_multiline(match):
"""将多行字符串转换为转义的单行字符串"""
key = match.group(1)
value = match.group(2)
# 转义字符串中的特殊字符
escaped_value = json.dumps(value, ensure_ascii=False)
return f'"{key}": {escaped_value}'
# 处理 original 字段
pattern = r'"(original|modified)": "([\s\S]*?)"(?=,\s*"(?:modified|original)"|,\s*\})'
# 分段处理,避免一次性处理整个文件
lines = content.split('\n')
result_lines = []
in_content_block = False
buffer = []
for i, line in enumerate(lines):
if '"content": {' in line:
in_content_block = True
result_lines.append(line)
elif in_content_block and ('},\n' in line or '},' in line or line.strip() == '},'):
# 处理content块
in_content_block = False
if buffer:
# 处理buffer中的内容
block_text = '\n'.join(buffer)
# 查找original和modified字段
if '"original":' in block_text or '"modified":' in block_text:
# 提取original的值
original_match = re.search(r'"original":\s*"([\s\S]*?)"(?=,\s*"modified")', block_text)
modified_match = re.search(r'"modified":\s*"([\s\S]*?)"(?=\s*\})', block_text)
if original_match and modified_match:
original_value = original_match.group(1)
modified_value = modified_match.group(1)
# 转义并重建
new_block = f' "original": {json.dumps(original_value, ensure_ascii=False)},\n'
new_block += f' "modified": {json.dumps(modified_value, ensure_ascii=False)}'
result_lines.append(new_block)
else:
result_lines.extend(buffer)
else:
result_lines.extend(buffer)
buffer = []
result_lines.append(line)
elif in_content_block:
buffer.append(line)
else:
result_lines.append(line)
# 写回文件
fixed_content = '\n'.join(result_lines)
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
f.write(fixed_content)
print("✅ 修复完成")
def simple_fix():
"""简单的修复方法:直接从备份文件复制结构,然后用正确格式的数据替换"""
import json
# 加载转换后的数据
with open('temp_mock_data.js', 'r', encoding='utf-8') as f:
temp_content = f.read()
# 提取industries的JSON部分
industries_match = re.search(r'const industries = (\[[\s\S]*?\]);', temp_content)
if industries_match:
industries_json_str = industries_match.group(1)
# 解析为Python对象
industries_data = json.loads(industries_json_str)
# 提取resumeTemplates的JSON部分
templates_match = re.search(r'const resumeTemplates = (\{[\s\S]*?\});', temp_content)
if templates_match:
templates_json_str = templates_match.group(1)
# 解析为Python对象
templates_data = json.loads(templates_json_str)
# 读取原始文件结构
with open('src/mocks/resumeInterviewMock.js.backup_final', 'r', encoding='utf-8') as f:
original = f.read()
# 保持原始文件的其他部分,只替换数据
# 找到industries的位置
industries_start = original.find('const industries = [')
industries_end = original.find('];', industries_start) + 2
# 找到resumeTemplates的位置
templates_start = original.find('const resumeTemplates = {')
templates_end = original.find('};', templates_start) + 2
# 构建新文件
new_content = original[:industries_start]
new_content += f'const industries = {json.dumps(industries_data, ensure_ascii=False, indent=2)};'
new_content += original[industries_end:templates_start]
new_content += f'const resumeTemplates = {json.dumps(templates_data, ensure_ascii=False, indent=2)};'
new_content += original[templates_end:]
# 保存
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
f.write(new_content)
print("✅ 使用简单方法修复完成")
def main():
print("修复多行字符串问题...")
simple_fix()
# 验证
import subprocess
result = subprocess.run(['node', '-c', 'src/mocks/resumeInterviewMock.js'],
capture_output=True, text=True)
if result.returncode == 0:
print("✅ 语法检查通过!")
else:
print(f"❌ 仍有语法错误:{result.stderr[:200]}")
if __name__ == "__main__":
main()