
背景需求:
作为信息园,每周都要上传学校活动通讯。9月12日,2025年的通讯链接发布

我要补发1-4周的通讯
设计过程
一、首先做一个一个22周的文件夹

'''
每周通讯上报,制作周次文件夹
Deepseek,阿夏
20250920
'''import osdef create_weekly_communications():# 创建主文件夹main_folder = r'C:\Users\jg2yXRZ\OneDrive\桌面\每周计划'if not os.path.exists(main_folder):os.makedirs(main_folder)print(f"已创建主文件夹: {main_folder}")else:print(f"主文件夹已存在: {main_folder}")# 创建22个周通讯文件夹for week in range(1, 23):# 格式化周数,确保两位数显示(01, 02, ..., 22)week_str = f"第{week:02d}周通讯"week_path = os.path.join(main_folder, week_str)if not os.path.exists(week_path):os.makedirs(week_path)print(f"已创建: {week_path}")else:print(f"文件夹已存在: {week_path}")print("所有周通讯文件夹创建完成!")# 执行创建函数
create_weekly_communications()

二、下载文件

把每周通讯的docx放到指定的周次文件夹里


三、处理需要的文字


周计划里面都是框架表,第一部分是和主要概述,第二部分是五天每天安排,第三部分才是我需要的文字通讯(精彩亮点)。
所以需要提取“精彩亮点”单元格的文字



只提取精彩亮点部分的文字,格式都消失了,也没有缩进。但是我上传通讯,不需要字体格式。而且大部分是简讯,写成300字一段就可以了。

最后落款,现在是“信息提供:XXX撰稿 XXX”的样式,需要改成需要是“XXXX幼儿园 XXX”,









'''
复制第01周.docx,只要其中“精彩亮点”单元格的文字。同时把“信息提供|撰稿”部分改成学校名字+作者名
Deepseek,阿夏
20250920
'''import os
import re
from docx import Documentdef process_weekly_highlight_direct():"""直接处理:提取精彩亮点内容并处理供稿信息,直接生成修改3文件"""# 设置文件夹路径folder_path = r"C:\Users\jg2yXRZ\OneDrive\桌面\20250901每周计划\第04周通讯"# 检查文件夹是否存在if not os.path.exists(folder_path):print(f"文件夹不存在: {folder_path}")return None# 查找文件夹中的原始docx文件docx_files = [f for f in os.listdir(folder_path) if f.endswith('.docx') and not f.endswith('(修改).docx')]if not docx_files:print("文件夹中没有找到原始docx文件")return None# 处理第一个找到的docx文件original_file = docx_files[0]original_path = os.path.join(folder_path, original_file)# 创建直接输出的文件(修改3)base_name = os.path.splitext(original_file)[0]final_file = f"{base_name}(修改).docx"final_path = os.path.join(folder_path, final_file)try:# 打开原始文档doc = Document(original_path)# 创建新文档new_doc = Document()# 查找包含"精彩亮点"的表格或段落found_highlight = Falsecollecting = False# 先检查表格for table in doc.tables:for row in table.rows:for cell in row.cells:cell_text = cell.text.strip()if "精彩亮点" in cell_text:found_highlight = True# 提取这个单元格的所有文本并处理供稿信息for paragraph in cell.paragraphs:text = paragraph.textif text.strip():# 处理供稿信息processed_text = process_contribution_info(text)new_doc.add_paragraph(processed_text)breakif found_highlight:breakif found_highlight:break# 如果没有在表格中找到,在段落中查找if not found_highlight:for paragraph in doc.paragraphs:text = paragraph.text.strip()if "精彩亮点" in text and not collecting:collecting = True# 处理供稿信息processed_text = process_contribution_info(paragraph.text)new_doc.add_paragraph(processed_text)continueif collecting:if (text.startswith("第") and "周" in text) or text.startswith("====="):breakif text:# 处理供稿信息processed_text = process_contribution_info(paragraph.text)new_doc.add_paragraph(processed_text)# 保存最终文档new_doc.save(final_path)print(f"✅ 已直接创建修改文件: {final_file}")print("✅ 已提取精彩亮点内容并处理供稿信息")# 显示处理结果预览print("\n📋 处理结果预览(包含供稿信息的行):")final_doc = Document(final_path)for i, paragraph in enumerate(final_doc.paragraphs):if paragraph.text.strip() and re.search(r'闵行区XXXX幼儿园', paragraph.text):print(f"{i+1}. {paragraph.text.strip()}")return final_pathexcept Exception as e:print(f"❌ 处理文件时出错: {e}")return Nonedef process_contribution_info(text):"""处理供稿信息,替换为指定格式"""# 检查是否包含供稿信息if re.search(r'信息提供|撰稿', text):# 提取名字部分并保留info_match = re.search(r'信息提供[::]\s*([^)]*)', text)author_match = re.search(r'撰稿[::]\s*([^)]*)', text)if info_match and author_match:author_name = author_match.group(1).strip()# 替换为:闵行区XXXX幼儿园 名字text = re.sub(r'信息提供[^)]*撰稿[^)]*', f'闵行区XXXX幼儿园 {author_name}', text)elif info_match:info_name = info_match.group(1).strip()text = re.sub(r'信息提供[^)]*', f'闵行区XXXX幼儿园 {info_name}', text)elif author_match:author_name = author_match.group(1).strip()text = re.sub(r'撰稿[^)]*', f'闵行区XXXX幼儿园 {author_name}', text)# 处理括号格式if re.search(r'(信息提供[^)]*撰稿[^)]*)', text):author_name = author_match.group(1).strip() if author_match else ""text = re.sub(r'(信息提供[^)]*撰稿[^)]*)', f'(闵行区XXXX幼儿园 {author_name})', text)elif re.search(r'(信息提供[^)]*)', text):info_name = info_match.group(1).strip() if info_match else ""text = re.sub(r'(信息提供[^)]*)', f'(闵行区XXXX幼儿园 {info_name})', text)elif re.search(r'(撰稿[^)]*)', text):author_name = author_match.group(1).strip() if author_match else ""text = re.sub(r'(撰稿[^)]*)', f'(闵行区XXXX幼儿园 {author_name})', text)return textdef main():"""主函数:执行完整的处理流程"""print("=" * 50)print("📝 开始处理周通讯文档(直接生成修改)")print("=" * 50)# 直接处理:提取精彩亮点内容并处理供稿信息print("\n🎯 直接处理:提取精彩亮点内容并处理供稿信息")final_path = process_weekly_highlight_direct()if final_path:print("\n" + "=" * 50)print("✅ 处理完成!")print(f"📁 最终文件: {os.path.basename(final_path)}")print("=" * 50)# 显示完整的内容预览print("\n📋 完整内容预览(前15行):")final_doc = Document(final_path)for i, paragraph in enumerate(final_doc.paragraphs[:15]):if paragraph.text.strip():print(f"{i+1}. {paragraph.text.strip()}")else:print("❌ 处理失败")# 执行主函数
if __name__ == "__main__":main()




同样方式修改路径,每个周次文件夹都做一个文字提取版






通过Python,将通讯内容预处理,可大大节省人工。
四、后续将一个个整篇通讯放到Deepseek,浓缩200字(简讯),也可以快速上传了。这也极大提高了效率。

600字专讯(其实必须是区级大活动,我这里没有,演示一下)

感悟
技术提高效率,技术改变生活,技术改变生活!
