【办公类-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://www.mzph.cn/news/706793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【六袆-Golang】Golang:安装与配置Delve进行Go语言Debug调试

安装与配置Delve进行Go语言Debug调试 一、Delve简介二、win-安装Delve三、使用Delve调试Go程序[命令行的方式]四、使用Golang调试程序 Golang开发工具系列&#xff1a;安装与配置Delve进行Go语言Debug调试 摘要&#xff1a; 开发环境中安装和配置Delve&#xff0c;一个强大的G…

高通 AI Hub 上手指南

文章介绍 2月26日&#xff0c;高通在2024年世界移动通信大会&#xff08;MWC2024&#xff09;上发布高通AI Hub&#xff0c; AI Hub 简化了AI 模型部署到边缘设备的过程。可以利用AI-hub云端托管 Qualcomm 设备上&#xff0c;在几分钟内完成模型的优化、验证和部署。本文以Pyto…

RV32/64 特权架构 - 特权模式与指令

RV32/64 特权架构 - 特权模式与指令 1 特权模式2 特权指令2.1 mret&#xff08;从机器模式返回到先前的模式&#xff09;2.2 sret&#xff08;从监管模式返回到先前的模式&#xff09;2.3 wfi&#xff08;等待中断&#xff09;2.4 sfence.vma&#xff08;内存屏障&#xff09; …

idea 更新maven java版本变化

今天遇到个问题就是&#xff0c;点击maven的reload&#xff0c;会导致setting 里的java compiler 版本变化 这里的话&#xff0c;应该是settings.xml文件里面的这个限定死了&#xff0c;修改一下或者去掉就可以了 <profile><id>JDK-1.8</id><activatio…

华为OD机试真题-靠谱的车-2023年OD统一考试(C卷)---Python3-开源

题目&#xff1a; 考察内容&#xff1a; 思维转化&#xff0c;进制转化&#xff0c;9进制转为10进制&#xff0c;在4的位置1&#xff0c;需要判断是否大于4 代码&#xff1a; """ 题目分析&#xff1a; 9进制转化为10进制23-25 39-50 399-500输入&#xff1a…

06 基于单位脉冲信号的信号合成与分解

各位看官&#xff0c;大家好&#xff01;本讲为《数字信号处理理论篇》06 基于单位脉冲信号的信号合成与分解。&#xff08;特别提示&#xff1a;课程内容为由浅入深的特性&#xff0c;而且前后对照&#xff0c;不要跳跃观看&#xff0c;请按照文章或视频顺序进行观看。 笔者今…

排序算法--堆排序

堆排序的时间复杂度是O&#xff08;N*logN&#xff09;&#xff0c;优于选择排序O&#xff08;N^2&#xff09; 一、堆 1.堆的概念&#xff1a;堆一般指的是二叉堆&#xff0c;顾名思义&#xff0c;二叉堆是完全二叉树或者近似完全二 2.堆的性质&#xff1a;①完全二叉树 ②每…

数据结构(C语言)代码实现(九)——迷宫探路表达式求值

目录 参考资料 迷宫探路 顺序栈头文件SqStack.h 顺序栈函数实现SqStack.cpp 迷宫探路主函数 表达式求值 链式顺序栈头文件LinkStack.h 链式顺序栈函数实现LinkStack.cpp 表达式求值主函数 测试结果 参考资料 数据结构严蔚敏版 2021-9-22【数据结构/严蔚敏】【顺序…

istio学习记录——VirtualService详解

上一篇使用VirtualService进行了简单的流量控制&#xff0c;并通过Gateway将流量导入到了集群内。这一篇将更加深入的介绍 VirtualService。 k8s中有service&#xff0c;service能够对流量进行负载均衡&#xff0c;那为什么istio又引入了VirtualService呢&#xff0c;因为serv…

wsl2挂载识别U盘中的内容

&#xff08;1&#xff09;wsl2中识别U盘&#xff0c;访问U盘 U盘插入电脑后&#xff0c;WSL并不会识别出U盘&#xff0c;如果想要在WSL中使用或查看U盘文件&#xff0c;需要挂载USB设备。 1、首先建一个文件夹用来挂载USB设备里文件的文件夹&#xff1a; sudo mkdir /mnt/e…

android stdio环境搭建

android stdio环境搭建 Jdk环境搭建 1. 准备Jdk,这边已经准备好了jdk1.8.0,该文件直接使用即可 2. 系统变量添加 %JAVA_HOME%\bin JAVA_HOME 3. 系统变量&#xff0c;Path路径添加 4. 添加完成后&#xff0c;输入命令javac / java -version&#xff0c;验证环境是否搭建…

贪心算法练习day2

删除字符 1.题目及要求 2.解题思路 1&#xff09;初始化最小字母为‘Z’&#xff0c;确保任何字母都能与之比较 2&#xff09;遍历单词&#xff0c;找到当前未删除字母中的最小字母 3&#xff09;获取当前位置的字母 current word.charAt(i)&#xff1b; 4&#xff09;删…

精品基于SpringBoot的体育馆场地预约赛事管理系统的设计与实现-选座

《[含文档PPT源码等]精品基于SpringBoot的体育馆管理系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#…

学习pybind11:Hello World例子

首先要明白pybind11是干啥的&#xff0c;对于一个C/C库&#xff0c;可以用pybind11封装它的接口为Python接口&#xff0c;这样得到一个python库&#xff0c;就可以把功能强大的库丢给使用python的boys & girls使用了~ 因此&#xff0c;使用pybind11做封装&#xff0c;是我…

代码随想录算法训练营第44天|● 完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

文章目录 ● 完全背包卡码网&#xff1a;52. 携带研究材料-完全背包理论练习代码&#xff1a; ● 518. 零钱兑换 II思路&#xff1a;五部曲 代码&#xff1a;滚动数组代码二&#xff1a;二维数组 ● 377. 组合总和 Ⅳ思路&#xff1a;五部曲 代码&#xff1a; ● 完全背包 卡码…

Bert-as-service 学习

pip3 install --user --upgrade tensorflow 安装遇到的问题如下&#xff1a; pip3 install --user --upgrade tensorflow 1052 pip uninstall protobuf 1053 pip3 uninstall protobuf 1054 pip3 install protobuf3.20.* 1055 pip3 install open-clip-torch2.8.2 1…

如何选择科技公司或者技术团队来开发软件项目呢

最近有客户问我们为什么同样软件项目不同公司报价和工期差异很大&#xff0c;我们给他解释好久才讲清楚&#xff0c;今天整理一下打算写一篇文章来总结一下&#xff0c;有需要开发朋友可以参考&#xff0c;我们下次遇到客户也可以直接转发文章给客户自己看。 我们根据我们自己报…

EMR StarRocks实战——Mysql数据实时同步到SR

文章摘抄阿里云EMR上的StarRocks实践&#xff1a;《基于实时计算Flink使用CTAS&CDAS功能同步MySQL数据至StarRocks》 前言 CTAS可以实现单表的结构和数据同步&#xff0c;CDAS可以实现整库同步或者同一库中的多表结构和数据同步。下文主要介绍如何使用Flink平台和E-MapRed…

jvm常用参数配置

一、 常用参数 -Xms JVM启动时申请的初始Heap值&#xff0c;默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时&#xff0c;JVM会减小heap的大小到-Xms指定的大小&#xff0c;可通过-XX:MaxHeapFreeRation来指定这个比列。Server端JVM最好将-Xms和-Xmx设为相同…

Java SpringBoot微服务面试题

Java SpringBoot微服务面试题 前言1、什么是 SpringBoot&#xff1f;2、什么是起步依赖&#xff1f;3、什么是自动配置&#xff1f;4、什么是命令行界面&#xff1f;5、什么是Actuator监控器&#xff1f;6、SpringBoot 的核心注解有哪些&#xff1f;7、什么是YAML&#xff1f;8…