| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- 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()
|