使用python-docx在word文档中查找书签,并在书签处写入数据

from docx import Document,oxml
from docx.oxml.shared import qn
from docx.text.paragraph import Paragraph
from docx.oxml import OxmlElement
def get_bookmark_par_element_start(document, bookmark_name):"""查找标签的起始位置(所在的段落)"""doc_element = document.part.elementbookmarks_list = doc_element.findall('.//' + qn('w:bookmarkStart'))for bookmark in bookmarks_list:name = bookmark.get(qn('w:name'))if name == bookmark_name:par = bookmark.getparent()if not isinstance(par, oxml.CT_P):print('par不是CT_P类型,返回2')return 2else:print(type(par))#return par, bookmark.get(qn('w:id'))return parprint('没找到书签,返回1')return 1
#查找书签的结束位置(所在的段落)
def get_bookmark_par_element_end(document, bookmark_id):doc_element = document.part.elementbookmarks_list = doc_element.findall('.//' + qn('w:bookmarkEnd'))for bookmark in bookmarks_list:name = bookmark.get(qn('w:id'))if name == bookmark_id:par = bookmark.getparent()if not isinstance(par,oxml.CT_P):return 2else:return parreturn 1
def insert_paragraph_after(paragraph, text=""):"""在paragraph后添加新的段落"""new_p = OxmlElement("w:p")paragraph._p.addnext(new_p)new_para = Paragraph(new_p, paragraph._parent)print(new_para)print(text)new_para.add_run(text)return new_para
def set_bookmark_values(document, bookmark_name, text_list: list):""":param document::param bookmark_name::param text_list: 待添加的文本列表:return:"""bookmark_par = get_bookmark_par_element_start(document, bookmark_name)if bookmark_par == 1 or bookmark_par==2:print('未到书签或类型错误')returnbookmark_par_parent = bookmark_par.getparent()#获得书签索引index = bookmark_par_parent.index(bookmark_par)for _i, _text in enumerate(text_list):base_paragraphs = document.paragraphs[index + _i]result_with_space = " ".join(_text)insert_paragraph_after(base_paragraphs, result_with_space)

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

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

相关文章

井盖倾斜怎么办?智能井盖传感器监测方法

井盖倾斜是一个紧迫的问题,如果不及时处理可能会导致道路安全性下降,进而增加车辆和行人发生意外的风险。为应对这一问题现已开发出智能井盖传感器,它可以持续监测井盖的状态,一旦发现倾斜等异常情况会立即发出警报。 在智慧城市的…

【unity实战】如何更加规范的创建各种Rogue-Lite(肉鸽)风格的物品和BUFF效果(附项目源码)

文章目录 前言定义基类实现不同的BUFF效果一、回血BUFF1. 简单的回血效果实现2. BUFF层数控制回血量 二、攻击附带火焰伤害三、治疗领域1. 简单的治疗领域实现2. 添加技能冷却时间 通过拾取物品获取对应的BUFF参考源码完结 前言 当创建各种Rogue-Lite(肉鸽&#xf…

Rocket-API : API敏捷开发框架, 用于API接口功能的快速开发

本心、输入输出、结果 文章目录 Rocket-API : API敏捷开发框架, 用于API接口功能的快速开发前言概述特性工作原理相关截图相关地址花有重开日,人无再少年实践是检验真理的唯一标准Rocket-API : API敏捷开发框架, 用于API接口功能的快速开发 编辑:简简单单 Online zuozuo 地…

Linux基础项目开发1:量产工具——显示系统(二)

前言: 前面我们已经对这个项目的基本框架有了一个初步的了解与认识,要实现显示管理器与输入管理器,有输入有输出基本就实现这个项目的大部分功能了,首先我们先来做显示系统,对于上层系统为了让程序更好扩展&#xff0c…

策略模式实践

目录 前言 五个部分 名词解释 代码 controller层 HelloService接口 实现类 自定义注解 上下文 策略工厂 Java SPI配置 验证 前言 五个部分 接口、实现类、自定义注解、上下文、策略工厂 名词解释 自定义注解(方便后期增加实现类后灵活控制策略) 上下文(初始化…

【RESTful API】RESTful接口设计练习

参考: BV1Ps4y1J7Ve ---------------------------------------------------------------------------------------------------------- 一、RESTful框架 常见的有SpringMVC,jersey,play 二、API测试工具 Postman,Insomnia 三、RESTful接口设计练习 3.1 项目准备 构…

【项目实战】SpringBoot连接openGauss

一:Docker安装openGauss 1.下载openGauss 安装好Docker好以后,执行如下命令下载openGauss3.0镜像。docker pull enmotech/opengauss:3.0.0 2.运行openGauss 执行如下命令docker run -itd --name opengauss \ --restartalways \ --privilegedtrue \ …

eNSP防火墙USG6000V使用Web界面登入教程

文章目录 登入流程1、下载USG6000V的镜像包2、导入USG6000V的镜像包3、配置防火墙web页面4、修改本机vmnet1网卡的ipv4地址5、在eNSP上添加云6、配置防火墙管理地址,开启http服务7、关闭电脑防火墙8、访问web页面 登入流程 1、下载USG6000V的镜像包 链接&#xff…

MySQL表连接

文章目录 MySQL内外连接1.内连接2.外连接(1)左外连接(2)右外连接 3.简单案例 MySQL内外连接 1.内连接 内连接的SQL如下: SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;说明一下…

pytest-pytest-html测试报告这样做,学完能涨薪3k

在 pytest 中提供了生成html格式测试报告的插件 pytest-html 安装 安装命令如下: pip install pytest-html使用 我们已经知道执行用例的两种方式,pytest.main()执行和命令行执行,而要使用pytest-html生成报告,只需要在执行时加…

分布式运用之ELK企业级日志分析系统

1.1 ELK的概念与组件 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch: 是基于Lucene(一个全文检索引…

2023-简单点-机器学习中常用的特殊函数,激活函数[sigmoid tanh ]

机器学习中的特殊函数 Sigmoidsoftplus函数tanhReLu(x)Leaky-ReluELUSiLu/ SwishMish伽玛函数beta函数Ref Sigmoid 值域: 【0,1】 定义域:【负无穷,正无穷】 特殊点记忆: 经过 [0 , 0.5] 关键点[0,0.5]处的导数是 0.025 相关导数: softplu…

『VUE3 の 要点摘录』

✅v-model 用法 v-model 原生方法: v-model computed : 更改名字: 多个 v-model 绑定 处理 v-model 修饰符 ✅TS项目报错 1、TypeScript 错误 “Module ‘…index’ has no default export” // tsconfig.json {...."compilerOpt…

备份恢复作业

备份恢复作业: 异机恢复recover database报如下错误: archived log file name/oradata/arch/1_237_1151011666.dbf thread1 sequence237 archived log file name/oradata/arch/2_256_1151011666.dbf thread2 sequence256 unable to find archived log ar…

路径规划型线性dp

题目来源:acwing 275 传纸条 分析:这题和两人同时摘樱桃之类的题一样,一个人从左上角走到右下角,再从右下角走回左上角,相同地点的分数只能得一次(或者不能走相同地点)。这种题统一可以按照两…

大金仓数据库:kingbase学习

kingbase学习 1.简介2. 安装3. 基础使用3.1 客户端连接3.2 表数据测试3.2.1 建表创建字段备注 3.2.2 数据写入测试3.2.2 json测试3.2.2.1 json查询测试3.2.2.2 json修改测试3.2.2.3 json数据迁移测试 4.springboot实战4.1 maven依赖4.2 连接配置4.3 mybatis-plus测试4.4 liquib…

QTextEdit 是 Qt 框架中的一个小部件(Widget),用于显示和编辑多行文本内容

QTextEdit 是 Qt 框架中的一个小部件(Widget),用于显示和编辑多行文本内容。 QTextEdit 提供了一个可编辑的文本区域,可以用于显示和编辑富文本或纯文本。它支持基本的文本格式设置(如字体、颜色、样式等)…

【AI认证笔记】NO.2人工智能的发展

目录 一、人工智能的发展里程碑 二、当前人工智能的发展特点 1.人工智能进入高速发展阶段 2.人工智能元年 三、人工智能高速发展的三大引擎 1.算法突破 2.算力飞跃 3.数据井喷 四、AI的机遇 五、AI人才的缺口 六、行业AI 人工智能算法,万物互联&#xff…

从家暴谈中国女性在社会中的艰难处境

1、引言 2023年8月17日,一部名叫《我经过风暴》的电影悄然上映,引发了我的诸多思考。我研究过很多类似的案例,例如2020年的“拉姆案”、2021年的“禹秀英案”、2022年的“西安家暴事件”、2023年的“重庆杀妻案”…等等。这一系列案件&#…

qInstallMessageHandler的学习

背景:需要做一个日志系统。 把信息重定向到txt文件中。 参考: QT 调试信息如何输出到文件(qDebug/qWarning/qCritical/qFatal)-CSDN博客 Qt 之 qInstallMessageHandler(重定向至文件)-CSDN博客 demo…