【办公类-21-05】20240227单个word按“段落数”拆分多个Word(成果汇编 只有段落文字 1拆5)

作品展示

背景需求

前文对一套带有段落文字和表格的word进行13份拆分

【办公类-21-04】20240227单个word按“段落数”拆分多个Word(三级育婴师操作参考题目1拆13份)-CSDN博客文章浏览阅读293次,点赞8次,收藏3次。【办公类-21-04】20240227单个word按“段落数”拆分多个Word(三级育婴师操作参考题目1拆13份)https://blog.csdn.net/reasonsummer/article/details/136331041现在我随便找一份docx文件(全部都是段落文字,没有表格),

试试没表格干扰,是否直接读取段落就可以将加粗部分的文字另存多份

素材准备:

有几个加粗标题(不能是一级标题这种,一定清除格式,加粗)

错误的

# https://blog.csdn.net/lau_jw/article/details/114383781'''成果汇编word题目拆分成多个表格(根据标题(加粗)所在行数拆分-没有表格,只有段落文字)
作者:阿夏
时间:2024年2月27日
'''from docx import Document
from openpyxl import load_workbook
import glob
import re,osprint('----1、word数据清洗------')
a='成果汇编'path = r"C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题"
file=path + r'\{}.docx'.format(a)  # 必须是docx
print(file)
# C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题\电子屏安全管理制度(样本)2.docx# 提取四个加粗标题所在的行数    # 参考https://www.shouxicto.com/article/96876.html
doc= Document(file)# 遍历每个段落并判断是否为空白行,如果有空白行,就删除
for paragraph in doc.paragraphs:if not paragraph.text.strip():# 如果是空白行则将其从文档中移除p = paragraph._elementp.getparent().remove(p)     doc.save(path + r'\{}(去掉回车).docx'.format(a))print('----2、读取word里面标题加粗段落的行数------')filename=path + r'\{}(去掉回车).docx'.format(a)# 打开Word文档
doc = Document(filename)d=len(doc.paragraphs)
print(d)
# docx没有去掉空行前,一共有258段文字
# docx去掉空行后,一共有244段文字h=[]
s=[]
# 遍历文档中的段落
for i, paragraph in enumerate(doc.paragraphs):if paragraph.runs:# 检查段落中的所有运行对象for run in paragraph.runs:if run.bold:# 如果运行对象的文字为加粗,则打印段落索引# print("段落", i, "的文字被加粗了")h.append(i)# 提取每一份的加粗标题t=doc.paragraphs[i].text                # print(t)s.append(t)
s=list(set(s))
s.sort()
# print(s)
# ['3.1.1 运用发育诊断法对2岁婴儿的以不同步子行走能力进行测试', '3.1.2 为2岁婴儿编制规范、适宜的个别化游戏活动计划(5分钟)', '3.1.3 设计生活中婴儿动手自理的活动(5分钟)', '3.1.4 六个月以内
# 的婴儿的精细动作的日常练习活动设计(5分钟)', '3.1.5 列举两种感统练习器械,并简述其活动功能(5分钟)', '3.2.1 请阐述对婴儿语言发展水平的观察与记录方法(5分钟)', '3.2.2 如何制定婴幼儿个别化
# 语言培养计划(5分钟)', '3.2.3 设计一份记录表格,观察一个6个月左右的宝宝寻找不同声源的感知练习过程(5分钟)', '3.2.4 设计一个观察表,观察并调整婴儿在视动协调方面的练习(5分钟)', '3.2.5 设 
# 计一个观察表,记录孩子可能发生的行为(5分钟)', '3.3.1 如何对待任性的孩子(5分钟)', '3.3.2 如何对待爱哭的孩子(5
# print(len(s))
# 13h=list(set(h))
h.sort()
j=h[1:]
j.append(d)print(h)
print(len(h))
print(j)
print(len(j))
# # 去掉空行前
# # [1, 25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238]
# # 13
# # [25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238, 258]
# # 13
# # 去掉空行后
# # [1, 23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224]
# # 13
# # [23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224, 244]print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
# 拆分docx(读取加粗的行,这些行还要加上表格的行数)
# 13张表格里面分别有几个表格# bg=[2,1,0,1,1,1,1,1,1,1,0,0,0]# # 第一张表是原来的段落数,所以就是0
# bg.insert(0,0)
# # print(bg)# # 数字累加
# o = []
# sum = 0
# for num in bg:
#     sum += num
#     o.append(sum)
# print(o)
# # [0, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
# # # # 没有空行的内容print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
# 拆分docx(读取加粗的行,这些行还要加上表格的行数)
# 13张表格里面分别有几个表格imagePath1=path+r'\{}拆分'.format(a)
if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在os.makedirs(imagePath1)  # 若图片文件夹不存在就创建# for  x in range(len(s)):# 获取第一页的段落和表格
# a=int(j[x]+o[x])
for x in range(len(s)):doc = Document(filename)first_page_paragraphs = []first_page_tables = []for element in doc.element.body:if element.tag.endswith(('}p', '}tbl')):if element.getparent().index(element) >int(j[x]) :# if element.getparent().index(element) >int(j[x]+o[x]) :if element.tag.endswith('p'):first_page_paragraphs.append(element)else:first_page_tables.append(element)if element.getparent().index(element)<int(h[x]):# if element.getparent().index(element)<int(h[x]+o[x]):if element.tag.endswith('p'):first_page_paragraphs.append(element)else:first_page_tables.append(element)# print(int(j[x]+o[x]))# print(int(h[x]+o[x]))# 删除第一页的段落和表格for paragraph in first_page_paragraphs:p = paragraph.getparent()p.remove(paragraph)for table in first_page_tables:t = table.getparent()t.remove(table)# # 保存修改后的文档为新文件# doc.save(path+r'01.docx')doc.save(imagePath1+r'\{} {}.docx'.format('%02d'%x,s[x]))

结果显示及调整

1、结果显示题目与数字顺序不符合

1、解决思路

2、内容多一行

2、解决思路

正确代码全部

# https://blog.csdn.net/lau_jw/article/details/114383781'''成果汇编word题目拆分成多个表格(根据标题(加粗)所在行数拆分-没有表格,只有段落文字)
作者:阿夏
时间:2024年2月27日
'''from docx import Document
from openpyxl import load_workbook
import glob
import re,osprint('----1、word数据清洗------')
a='成果汇编'path = r"C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题"
file=path + r'\{}.docx'.format(a)  # 必须是docx
print(file)
# C:\Users\jg2yXRZ\OneDrive\桌面\三级操作题\电子屏安全管理制度(样本)2.docx# 提取四个加粗标题所在的行数    # 参考https://www.shouxicto.com/article/96876.html
doc= Document(file)# 遍历每个段落并判断是否为空白行,如果有空白行,就删除
for paragraph in doc.paragraphs:if not paragraph.text.strip():# 如果是空白行则将其从文档中移除p = paragraph._elementp.getparent().remove(p)     doc.save(path + r'\{}(去掉回车).docx'.format(a))print('----2、读取word里面标题加粗段落的行数------')filename=path + r'\{}(去掉回车).docx'.format(a)# 打开Word文档
doc = Document(filename)d=len(doc.paragraphs)
print(d)
# docx没有去掉空行前,一共有258段文字
# docx去掉空行后,一共有244段文字h=[]
s=[]
n=1
# 遍历文档中的段落
for i, paragraph in enumerate(doc.paragraphs):if paragraph.runs:# 检查段落中的所有运行对象for run in paragraph.runs:if run.bold:# 如果运行对象的文字为加粗,则打印段落索引# print("段落", i, "的文字被加粗了")h.append(i)# 提取每一份的加粗标题t=doc.paragraphs[i].text                print(t)b=str('%02d'%n)+ts.append(b)# 没有按照顺序排列# ['一、案例汇编对象', '三、案例提炼流程', '二、案例提炼要求', '四、相关事宜', '活动背景']# 所以加了一个数字序号# ['01活动背景', '02一、案例汇编对象', '03二、案例提炼要求', '04三、案例提炼流程', '05四、相关事宜']n+=1
s=list(set(s))
s.sort()
print(s)
# ['3.1.1 运用发育诊断法对2岁婴儿的以不同步子行走能力进行测试', '3.1.2 为2岁婴儿编制规范、适宜的个别化游戏活动计划(5分钟)', '3.1.3 设计生活中婴儿动手自理的活动(5分钟)', '3.1.4 六个月以内
# 的婴儿的精细动作的日常练习活动设计(5分钟)', '3.1.5 列举两种感统练习器械,并简述其活动功能(5分钟)', '3.2.1 请阐述对婴儿语言发展水平的观察与记录方法(5分钟)', '3.2.2 如何制定婴幼儿个别化
# 语言培养计划(5分钟)', '3.2.3 设计一份记录表格,观察一个6个月左右的宝宝寻找不同声源的感知练习过程(5分钟)', '3.2.4 设计一个观察表,观察并调整婴儿在视动协调方面的练习(5分钟)', '3.2.5 设 
# 计一个观察表,记录孩子可能发生的行为(5分钟)', '3.3.1 如何对待任性的孩子(5分钟)', '3.3.2 如何对待爱哭的孩子(5
# print(len(s))
# 13h=list(set(h))
h.sort()
j=h[1:]
j.append(d)print(h)
print(len(h))
print(j)
print(len(j))
# # 去掉空行前
# # [1, 25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238]
# # 13
# # [25, 48, 64, 77, 95, 117, 136, 158, 179, 200, 218, 238, 258]
# # 13
# # 去掉空行后
# # [1, 23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224]
# # 13
# # [23, 45, 60, 72, 89, 110, 127, 148, 168, 188, 205, 224, 244]print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
# 拆分docx(读取加粗的行,这些行还要加上表格的行数)
# 13张表格里面分别有几个表格# bg=[2,1,0,1,1,1,1,1,1,1,0,0,0]# # 第一张表是原来的段落数,所以就是0
# bg.insert(0,0)
# # print(bg)# # 数字累加
# o = []
# sum = 0
# for num in bg:
#     sum += num
#     o.append(sum)
# print(o)
# # [0, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
# # # # 没有空行的内容print('----3、读取word里面标题加粗段落的行数+表格占的段落数------')
# 拆分docx(读取加粗的行,这些行还要加上表格的行数)
# 13张表格里面分别有几个表格imagePath1=path+r'\{}拆分'.format(a)
if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在os.makedirs(imagePath1)  # 若图片文件夹不存在就创建# for  x in range(len(s)):# 获取第一页的段落和表格
# a=int(j[x]+o[x])
for x in range(len(s)):doc = Document(filename)first_page_paragraphs = []first_page_tables = []for element in doc.element.body:if element.tag.endswith(('}p', '}tbl')):if element.getparent().index(element) >=int(j[x]) :# if element.getparent().index(element) >int(j[x]+o[x]) :if element.tag.endswith('p'):first_page_paragraphs.append(element)else:first_page_tables.append(element)if element.getparent().index(element)<int(h[x]):# if element.getparent().index(element)<int(h[x]+o[x]):if element.tag.endswith('p'):first_page_paragraphs.append(element)else:first_page_tables.append(element)# print(int(j[x]+o[x]))# print(int(h[x]+o[x]))# 删除第一页的段落和表格for paragraph in first_page_paragraphs:p = paragraph.getparent()p.remove(paragraph)for table in first_page_tables:t = table.getparent()t.remove(table)# # 保存修改后的文档为新文件# doc.save(path+r'01.docx')doc.save(imagePath1+r'\{}.docx'.format(s[x]))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2814048.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

半小时到秒级,京东零售定时任务优化怎么做的?

导言&#xff1a; 京东零售技术团队通过真实线上案例总结了针对海量数据批处理任务的一些通用优化方法&#xff0c;除了供大家借鉴参考之外&#xff0c;也更希望通过这篇文章呼吁大家在平时开发程序时能够更加注意程序的性能和所消耗的资源&#xff0c;避免在流量突增时给系统…

在PyCharm中使用Git

安装Git CMD检查Git版本 打开cmd&#xff0c;输入git version&#xff0c;检查当前下载版本 配置git的user信息 在cmd中输入 git config --global user.name "用户名"git config --global user.email "用户邮箱"输入&#xff1a;git config --list&…

安卓平板主板_安卓平板电脑主板MTK联发科|高通|紫光展锐方案

安卓平板电脑主板选择了MTK联发科方案&#xff0c;并且可以选配高通或者紫光展锐平台方案&#xff0c;为用户提供更强劲的性能和定制化的服务。主板搭载了联发科MT6771处理器&#xff0c;采用12nm制程工艺&#xff0c;拥有八核Cortex-A73Coretex-A53架构&#xff0c;主频为2.0G…

STM32物联网(封装AT指令进行TCP连接及数据的接收和发送)

文章目录 前言一、AT指令函数封装1.向ESP8266发送数据函数2.设置ESP8266工作模式3.连接WIFI函数4.查询IP地址5.连接TCP服务器6.发送数据到TCP服务器7.接收并解析来自TCP服务器的数据8.关闭TCP服务器 二、代码测试总结 前言 本篇文章将继续带大家学习STM32物联网&#xff0c;那…

Python angr 符号执行生成 C 语言 Control-flow Graph (CFG)

绘制CFG利用包 angr 首先安装 pip install angr参考angr相关文档 https://docs.angr.io/en/latest/analyses/cfg.html 通过文档得知GitHub中的demo用法&#xff0c;以下为方法转述 https://github.com/axt/angr-utils 安装相关依赖angrutils&#xff08;注意&#xff0c;需要…

利用 ChatGPT 提升个人工作、生活品质

利用 ChatGPT 提升个人工作、生活品质和个人智慧是一个多方面而又切实可行的方法。 以下是一些具体的建议&#xff1a; 获取信息和知识&#xff1a; ChatGPT 可以回答各种问题并提供相关信息和知识。你可以利用它来查询工作中遇到的问题、学习新的知识领域或是获取日常生活中的…

Xcode15与苹果ios17适配以及遇到的问题

大家好&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;最近&#xff0c;苹果发布了全新的iOS17系统&#xff0c;而作为开发者&#xff0c;我们需要确保我们的应用程序能够与这个新系统完美适配。因此&#xff0c;今天我将和大家分享一些关于Xcode15与苹果17系统适配的经验&a…

JDK安装及环境变量配置(保姆级教程)

什么是JDK&#xff1f; JDK&#xff08;Java Development Kit&#xff09;是Java开发工具包的缩写 它是Java开发人员必备的软件包之一。JDK包含了用于编译、调试和运行Java程序的各种工具和库。通过安装JDK&#xff0c;开发人员可以开始编写、编译和运行Java应用程序、Applet和…

开源现场总线协议栈(ethercat、ethernet/ip、opc ua、profinet、canopen、modbus)

ecat主站及其相关&#xff1a; 1.soem&#xff1a;GitHub - OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT MasterSimple Open Source EtherCAT Master. Contribute to OpenEtherCATsociety/SOEM development by creating an account on GitHub.https://github.com/…

spring自定义事件监听器

1. 创建自定义事件 import org.springframework.context.ApplicationEvent; import java.util.List;public class CollectionCreateEvent extends ApplicationEvent {private List<String> fileList;public CollectionCreateEvent(Object source,List<String> file…

Linux中数据库sqlite3的基本命令的使用

数据库概念介绍 数据库安装 首先将本地的三个sqlite3安装包移动到共享文件夹然后在移动到自己创建的文件夹中如下&#xff1a; 然后对安装包进行解压如下&#xff1a;sudo dpkg -i *.deb检查是否安装成功sqlite数据库命令 系统命令 &#xff0c; 都以’.开头 .exit .quit .…

Unity开发一个FPS游戏

在之前的文章Unity 3D Input System的使用-CSDN博客中,我介绍了如何用Input System来实现一个FPS游戏的移动控制,这里将进一步完善这个游戏。 以下是游戏的演示效果: fps_demo 添加武器模型 首先是增加主角玩家的武器,我们可以在网上搜索到很多免费的3D资源,例如在以下网…

基于springboot+html实现的衣物捐赠平台

一、系统架构 前端&#xff1a;html | layui | jquery | css 后端&#xff1a;springboot | thymeleaf | mybatis 环境&#xff1a;jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 注册 03. web页-首页 04. web页-捐赠衣服 05. web页-论坛交流…

【小沐学QT】QT学习之OpenGL开发笔记

文章目录 1、简介2、Qt QOpenGLWidget gl函数3、Qt QOpenGLWidget qt函数4、Qt QOpenGLWindow5、Qt glut6、Qt glfw结语 1、简介 Qt提供了与OpenGL实现集成的支持&#xff0c;使开发人员有机会在更传统的用户界面的同时显示硬件加速的3D图形。 Qt有两种主要的UI开发方…

计算机网络:路由协议

路由协议简介 路由协议是计算机网络中不可或缺的一部分&#xff0c;它们负责确定数据包从源地址到目的地址的最佳路径。想象一下&#xff0c;如果你是一个数据包&#xff0c;路由协议就像是地图或导航工具&#xff0c;指导你如何到达目的地。 目录 路由协议简介 工作原理简化…

解决i18n国际化可读性问题,傻瓜式webpack中文支持国际化插件开发

先来看最后的效果 问题 用过国际化i18n的朋友都知道&#xff0c;天下苦国际化久矣&#xff0c;尤其是中文为母语的开发者&#xff0c;在面对代码中一堆的$t(abc.def)这种一点也不直观毫无可读性的代码&#xff0c;根本不知道自己写了啥 &#xff08;如上图&#xff0c;你看得出…

【从零开始学习重要知识点 | 第一篇】快速了解什么是幂等性以及常见解决方案

前言&#xff1a; 当我们在设计和实现分布式系统时&#xff0c;幂等性是一个非常重要的概念。幂等性可以简单地理解为&#xff1a;对于同一操作&#xff0c;不论执行多少次&#xff0c;产生的影响都是相同的。这个概念在分布式系统中非常重要&#xff0c;因为在这种环境下&…

Adobe Premiere Pro 引入AI提升对话音质;Stable Diffusion:AI图像生成简介

&#x1f989; AI新闻 &#x1f680; Adobe Premiere Pro 引入AI提升对话音质 摘要&#xff1a;Adobe公司最近发布了一项更新&#xff0c;为其视频编辑软件Premiere Pro&#xff08;22.4版本&#xff09;新增了一个名为Enhance Speech的功能&#xff0c;通过AI技术自动调节对…

GSVA -- 学习记录

文章目录 1.原理简介2. 注意事项3. 功能实现代码实现部分 4.可视化5.与GSEA比较 1.原理简介 Gene Set Variation Analysis (GSVA) 基因集变异分析。可以简单认为是样本数据中的基因根据表达量排序后形成了一个rank list&#xff0c;这个rank list 与 预设的gene sets&#xff…

Nginx反向代理ip透传与负载均衡

前言 上篇介绍了nginx服务器单向代理和动静分离等相关内容&#xff0c;可参考Nginx重写功能和反向代理-CSDN博客&#xff0c;这里就ip透传和负载均衡对nginx反向代理做进一步了解。 目录 一、客户端ip透传 1. 概述 2. 一级代理 2.1 图示 2.2 操作过程 3. 二级代理 3.…