import json import os def generate_markdown_report(): """生成Markdown格式的分析报告""" # 读取分析结果 with open('analysis_results.json', 'r', encoding='utf-8') as f: results = json.load(f) # 读取完整数据 with open('samples_data.json', 'r', encoding='utf-8') as f: full_data = json.load(f) # 开始生成报告 report = [] report.append("# 样本文件分析报告\n") report.append(f"**分析时间**: 2024\n") report.append(f"**文件总数**: {len(results)}\n") report.append("\n---\n") # 统计信息 report.append("\n## 📊 文件类型统计\n") type_count = {} for item in results: file_type = item['type'] type_count[file_type] = type_count.get(file_type, 0) + 1 for file_type, count in type_count.items(): report.append(f"- **{file_type}**: {count} 个\n") report.append("\n---\n") # 详细分析 report.append("\n## 📝 文件详细分析\n") for idx, item in enumerate(results, 1): filename = item['filename'] file_type = item['type'] report.append(f"\n### {idx}. {filename}\n") report.append(f"\n**文件类型**: {file_type}\n") # 获取完整文件信息 file_info = full_data.get(filename, {}) if 'format' in file_info: report.append(f"**文件格式**: {file_info['format']}\n") if 'encoding' in file_info: report.append(f"**文件编码**: {file_info['encoding']}\n") if 'length' in file_info: report.append(f"**文件长度**: {file_info['length']:,} 字符\n") # 根据类型添加特定信息 if file_type == '网络小说': if 'author' in item: report.append(f"**作者**: {item['author']}\n") if 'intro' in item: report.append(f"\n**内容简介**:\n```\n{item['intro']}\n```\n") if 'chapters_preview' in item and item['chapters_preview']: report.append(f"\n**章节预览**:\n") for chapter in item['chapters_preview'][:5]: report.append(f"- {chapter}\n") elif '剧本' in file_type: if 'scenes' in item and item['scenes'] > 0: report.append(f"**场景数量**: {item['scenes']} 个(前10000字统计)\n") if 'characters' in item and item['characters']: report.append(f"\n**主要人物**:\n") for char in item['characters'][:10]: report.append(f"- {char}\n") report.append(f"\n**结构特征**: {item['structure_notes']}\n") # 添加前3000字预览 report.append(f"\n**前3000字内容预览**:\n") report.append("```\n") preview = item['first_3000'][:3000] report.append(preview) report.append("\n```\n") report.append("\n---\n") # 总结 report.append("\n## 📌 分析总结\n") report.append("\n### 网络小说特征\n") report.append("- 采用章节式结构,通常有\"第X章\"标记\n") report.append("- 包含作者信息和内容简介\n") report.append("- 文件通常较大(几十万到几百万字符)\n") report.append("- 常见编码:GBK、GB18030\n") report.append("\n### 剧本特征\n") report.append("- 采用场景编号格式(如\"1-1\"、\"2-1\")\n") report.append("- 包含人物列表、对话和动作描述\n") report.append("- 使用特殊符号标记(如▲表示动作)\n") report.append("- 包含场景时间地点标注(日/夜、内/外)\n") report.append("\n### 编码处理经验\n") report.append("- TXT文件主要使用GBK和GB18030编码\n") report.append("- 需要尝试多种编码方式进行读取\n") report.append("- PDF和DOCX文件可以直接使用相应库读取\n") return ''.join(report) def main(): # 生成报告 report = generate_markdown_report() # 确保目录存在 os.makedirs('knowledge', exist_ok=True) # 保存报告 output_path = 'knowledge/samples_overview.md' with open(output_path, 'w', encoding='utf-8') as f: f.write(report) print(f"报告已生成: {output_path}") print(f"报告长度: {len(report)} 字符") if __name__ == '__main__': main()