背景需求:
每学期写完“信息计划”“信息小结”都需要上传园所“圆圆通”的信息公开,领导要求使用缩略版(就是删掉一些内容,不能整篇都发布出去,以免被抄袭?)
2023年第二学期的信息小结有16页
通常使用方法:
1、手动删除段落
可以从头到尾手动删除,一年只要删两次。
但是当时我需要对15条线路的计划小结(30份)进行缩略,我觉得全部手动删除,很繁琐。
2、使用“的*^13”替换成“……^p 的方法
于是网上搜索使用“的*^13”替换成“……^p 的方法,(把一段里面“的”后面的所有文字都删除,“的”改成省略号加回车)提高了删除的速度
不过这个也有一个问题,就是我需要预估,哪些字出现比较多,比如“的”“工会”“是”,删除的内容不够多。就需要再次输入词语进行替换。比较繁琐。
程序设计:
所以我想用代码来进行文章内汉字的数量出现的排序,,然后将数量最多的几个字作为替换内容
显示出现数量最多的字符前十个
结果显示,字符出现最多的是——逗号、教、的、学、句号、引号、幼等。
也就是说,需要排除符号后的汉字提取前5个。(如果替换逗号,估计整篇文章都删光了。)
用星火讯飞加了一个去掉“符号和数字”的要求。
结果出现最多的是“教”'的','学''幼”'动'
下面就用代码测试删除的效果
代码展示
'''
项目:信息计划小结缩略版(删除3-199个字)
工具:星火讯飞 阿夏
时间:2024年7月4日
'''from collections import Counter
import docxpath = r'C:\Users\Administrator\Desktop\信息计划小结缩略版'
file_path=path+r'\信息技术工作小结(2024.6).docx'# 删除最多的数字,准备删除几个?
# n=int(input('删除出现次数最多的数字,需要删除前几个?3、4、5\n'))
for n in range(3,200):t1='1、字符数量判断'print(f'{t1:-^20}')# 读取docx文件doc = docx.Document(file_path)# 提取所有段落中的文本all_text = []for paragraph in doc.paragraphs:all_text.append(paragraph.text)# 将所有文本合并为一个字符串full_text = ''.join(all_text)# 过滤掉标点符号和数字filtered_text = ''.join([char for char in full_text if char.isalpha()])# 使用Counter统计每个字符的数量char_count = Counter(filtered_text)# 按字符数量降序排序sorted_char_count = sorted(char_count.items(), key=lambda x: x[1], reverse=True)t2='2、删除字符'print(f'{t2:-^20}')result=sorted_char_count[0:n]print(result)doc = docx.Document(file_path)for s in range(len(result)): # 遍历所有段落for paragraph in doc.paragraphs:# 替换“的”后面的文字为……加回车# 找到目标字符的位置index = paragraph.text.find(result[s][0])if index != -1:# 保留目标字符之前的部分,删除之后的部分paragraph.text = paragraph.text[:index + 1]+'……'# 保存修改后的文档doc.save(path+fr'\信息技术工作小结(2024.6)缩略(删除{n}个字).docx')
删除3个字 28K
删除3个字,16页变成7页
删除199个字 25K
删除199个字,16页变成7页
无论删除几个字,段落数量不变。、
在测试删除1个字2个字
删除1个字,剩下8页
删除2个字,剩下7页
于是我选了删除3个字的那一份内容上传
用删除3个字后面文字的方法,实现计划小结的缩略
'''
项目:信息计划小结缩略版(删除3个字)
工具:星火讯飞 阿夏
时间:2024年7月4日
'''from collections import Counter
import docxpath = r'C:\Users\Administrator\Desktop\信息计划小结缩略版'
file_path=path+r'\信息技术工作小结(2024.6).docx'# 删除最多的数字,准备删除几个?
n=int(input('删除出现次数最多的数字,需要删除前几个?输入3\n'))
# for n in range(1,200):
t1='1、字符数量判断'
print(f'{t1:-^20}')
# 读取docx文件doc = docx.Document(file_path)# 提取所有段落中的文本
all_text = []
for paragraph in doc.paragraphs:all_text.append(paragraph.text)# 将所有文本合并为一个字符串
full_text = ''.join(all_text)# 过滤掉标点符号和数字
filtered_text = ''.join([char for char in full_text if char.isalpha()])# 使用Counter统计每个字符的数量
char_count = Counter(filtered_text)# 按字符数量降序排序
sorted_char_count = sorted(char_count.items(), key=lambda x: x[1], reverse=True)t2='2、删除字符'
print(f'{t2:-^20}')result=sorted_char_count[0:n]
print(result)doc = docx.Document(file_path)for s in range(len(result)): # 遍历所有段落for paragraph in doc.paragraphs:# 替换“的”后面的文字为……加回车# 找到目标字符的位置index = paragraph.text.find(result[s][0])if index != -1:# 保留目标字符之前的部分,删除之后的部分paragraph.text = paragraph.text[:index + 1]+'……'# 保存修改后的文档
doc.save(path+fr'\信息技术工作小结(2024.6)缩略(删除{n}个字).docx')