原来Python处理word这么简单:关于python操作文档的问题

关于python操作文档的问题

文档类型:docx
语言:python

我想在文档中姓名后面的下划线之上插入一个姓名,并保存为新的文档,
用python应该怎么实现呢
文档见下图

一般情况下,我们在看到题目的时候,应该先审题,看题目中有哪些难点,就是那些比较难以实现的点,比较费时费力的点,比较模糊不清的点,这些点都要提炼出来。

这个题目也是比较简单的,先按照我们常规的人工思想来思考这个问题该怎么解决:

如果是我们人工处理的话,就是单击到姓名后面的下划线,然后输入一个真实姓名,接着另存为另一个文档名字就可以了。

那如果要程序应该怎么处理呢?

通过之前的文章我们知道,python+selenium是可以录制操作步骤进行自动化操作的,这是一个解决问题的思路,通过录制操作步骤导出代码进行修改可以实现。

但是这种方式比较繁琐,通过查找资料,python有第三方库可以处理word:python-docx

官网例子:

```python
# 导入docx库中的Document类和Inches类
from docx import Document
from docx.shared import Inches# 创建一个Document对象
document = Document()# 添加一个标题,级别为0
document.add_heading('文档标题', 0)# 添加一个段落,内容为"A plain paragraph having some "
p = document.add_paragraph('A plain paragraph having some ')
# 在段落中添加加粗文本"bold"
p.add_run('bold').bold = True
# 在段落中添加普通文本" and some "
p.add_run(' and some ')
# 在段落中添加斜体文本"italic."
p.add_run('italic.').italic = True# 添加一个一级标题
document.add_heading('Heading, level 1', level=1)
# 添加一个引用样式的段落
document.add_paragraph('Intense quote', style='Intense Quote')# 添加一个无序列表项
document.add_paragraph('first item in unordered list', style='List Bullet'
)
# 添加一个有序列表项
document.add_paragraph('first item in ordered list', style='List Number'
)# 添加一张图片,宽度为1.25英寸
document.add_picture('monty-truth.png', width=Inches(1.25))# 定义一个记录列表,包含三个元组,每个元组包含三个元素:数量、ID和描述
records = ((3, '101', 'Spam'),(7, '422', 'Eggs'),(4, '631', 'Spam, spam, eggs, and spam')
)# 添加一个表格,1行3列
table = document.add_table(rows=1, cols=3)
# 获取表格的第一行单元格
hdr_cells = table.rows[0].cells
# 设置第一行单元格的文本内容
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
# 遍历记录列表,为表格添加行和单元格,并设置单元格的文本内容
for qty, id, desc in records:row_cells = table.add_row().cellsrow_cells[0].text = str(qty)row_cells[1].text = idrow_cells[2].text = desc# 添加一个分页符
document.add_page_break()# 保存文档为demo.docx
document.save('demo.docx')
```

 最终效果:

最后来看看我们带下划线的word怎么处理:

from docx import Document# 打开原始文档
doc = Document('doc.docx')# 遍历文档中的所有段落
for para in doc.paragraphs:# 寻找包含“姓名:”的段落if '姓名:' in para.text:# 提取姓名行的文本text = para.text# 查找“姓名:”和“性别:”的位置name_start = text.find('姓名:') + len('姓名:')underscore_index = text.find('_', name_start)  # 找到姓名后的下划线位置gender_start = text.find('性别:')  # 找到“性别:”的位置# 确保下划线和“性别:”都存在if underscore_index != -1 and gender_start != -1:# 计算插入位置和原有姓名(不包括下划线)insert_pos = underscore_indexoriginal_name = text[name_start:underscore_index].strip()# 清除原有段落内容para.clear()# 重新构建段落内容# 先添加“姓名:”及原姓名部分直到下划线前para.add_run(f'姓名:{original_name}')# 在下划线正上方插入真实姓名(这里以"张三"为例,请替换为实际姓名)real_name = "张三"para.add_run(real_name).underline = True  # 保持下划线样式# 继续添加下划线和剩余的文本,注意处理下划线和“性别:”之间的空白para.add_run('_' + text[underscore_index+1:gender_start].strip())# 添加“性别:”及其之后的内容para.add_run(text[gender_start:])# 保存到新文档
doc.save('newdoc.docx')

最终效果:

问题来源:

关于python操作文档的问题_编程语言-CSDN问答

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

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

相关文章

PHP+B/S架构 不良事件管理系统源码 医院不良事件报告系统源码,开发技术vue2+element+laravel8

PHPB/S架构 不良事件管理系统源码 医院不良事件报告系统源码,开发技术vue2elementlaravel8 技术架构:前后端分离,仓储模式,BS架构, 开发技术:PHPvscodevue2elementlaravel8mysql5.7,专业团队研…

[AutoSar]lauterbach_001_ORTI_CPUload_Trace

目录 关键词平台说明一、ORTI概述二、ORTI文件的生成三、ORTI文件的导入四、Trace 功能4.1 Trace 功能菜单介绍4.2 Trace功能的配置4.3 Trace MCDS 设置4.4 Task Switches断点的设置4.5 Trace 数据的录取4.6 CPU 负载和Task调度的查看 关键词 嵌入式、C语言、autosar、OS、BSW…

【高阶数据结构】图--最短路径问题

图--最短路径问题 一、单源最短路径--Dijkstra算法1、简介2、解析3、代码4、测试用例5、打印最小路径代码和测试6、缺陷:不能使用负路径 二、单源最短路径--Bellman-Ford算法1、简介2、解析(1)详情i、负权问题:一个点只跑一趟找最…

【微信开发】微信支付前期准备工作(申请及配置)

1、申请并配置公众号或微信小程序 1.1 账户申请 通过微信公众平台,根据指引申请微信小程序或公众号,申请时需要微信认证,申请流程不在赘述 1.2 信息配置 申请通过后,需进入小程序和公众号内进行信息配置 1.2.1 小程序信息配置…

Mac YOLO V9推理测试(基于ultralytics)

环境: Mac M1 (MacOS Sonoma 14.3.1) Python 3.11PyTorch 2.1.2 一、准备工作 使用YOLO一般都会接触ultralytics这个框架,今天来试试用该框架进行YOLO V9模型的推理。 YOLOv9目前提供了四种模型下载:yolov9-c.pt、yolov9-e.pt、gelan-c.p…

lint 代码规范,手动修复,以及vscode的第三方插件eslint自动修复

ESlint代码规范 不是语法规范,是一种书写风格,加多少空格,缩进多少,加不加分号,类似于书信的写作格式 ESLint:是一个代码检查工具,用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)…

【管理篇】如何横向沟通?

目录标题 什么是横向沟通?常见沟通问题 如何处理横向沟通中的问题? 什么是横向沟通? 所谓横向沟通,就是和没有直接汇报关系的合作方之间的沟通,指的是与平级间进行的与完成工作有关的交流;横向沟通核心的挑…

Npm Install Docusaurus Demo【npm 安装 docusaurus 实践 】

文章目录 1. 简介2. 前提2.1 安装 git2.2 安装 node 3. 安装4. 项目结构5. 访问5.1 localhost 访问5.2 ip 访问 1. 简介 Docusaurus 是一个facebook的开源项目,旨在帮助开发者构建易于维护和部署的文档网站。它提供了一个简单的方法来创建专业的文档网站&#xff0…

共享旅游卡免费旅游真实反馈,有图有真相?

新伙伴体验,云南昆大丽6天5晚品质双人游,真实反馈!珠海伙伴蔡总,加入千益畅行共享旅游卡团队,自己亲自体验“云南昆大丽6天5晚品质双人游”真实反馈,分享全程内容截图,无半点虚假! …

springboot引入security,测试接口报Unauthorized

1、报错截图 2、当前项目pom文件引入security <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId><version>2.2.2.RELEASE</version> </dependency> 3、解决…

数据结构之图——探索图论的奥秘

前言 在这篇文章中&#xff0c;我们一起来看看我们生活中都会用到&#xff0c;但却不那么熟悉的数据结构——图&#xff08;英语&#xff1a;graph&#xff09;。我们看下百科定义&#xff1a; 在计算机科学中&#xff0c;图&#xff08;英语&#xff1a;graph&#xff09;是一…

计算机毕业设计 | vue+springboot汽车销售管理系统(附源码)

1&#xff0c;项目介绍 本项目基于spring boot以及Vue开发&#xff0c;前端实现基于PanJiaChen所提供的开源后台项目vue-element-admin改造。 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能&#xff0c;提供经理和销售两种角色进行管理。 2&…

某MBTI性格测试系统后台Getshell

在淘宝购买了性格测试系统源代码进行环境部署,后进行渗透测试 淘宝源码链接:https://item.taobao.com/item.htm?ftt&id790798788255 (自己学习(代码审计、算法、环境搭建)知识技能提升) 环境准备 集成环境选的是小皮 phpstudy 创建网站,将源代码放入网站根目录配置好数据…

Doris【部署 01】Linux部署MPP数据库Doris稳定版(下载+安装+连接+测试)

本次安装测试的为稳定版2.0.8官方文档 https://doris.apache.org/zh-CN/docs/2.0/get-starting/quick-start 这个简短的指南将告诉你如何下载 Doris 最新稳定版本&#xff0c;在单节点上安装并运行它&#xff0c;包括创建数据库、数据表、导入数据及查询等。 Linux部署稳定版Do…

当下是风口的热门兼职副业,月入3万问题不大,附保姆教程!

近年来&#xff0c;短视频行业呈现出迅猛的发展势头&#xff0c;已经成为当下最受欢迎的一种形式。甚至连曾经的电商巨头京东也开始积极布局这一领域&#xff0c;投入巨资20亿元进行深入耕耘。 周周近财&#xff1a;让网络小白少花冤枉钱&#xff0c;赚取第一桶金 不知道您是…

Android APP读写外置SD卡无权限 java.io.IOException: Permission denied

在物联网应用里&#xff0c;app需要对挂载SD卡读写文件&#xff0c;从 Android 4.4&#xff08;KitKat&#xff09;版本开始&#xff0c;Google 引入了一项名为 "Storage Access Framework" 的新功能&#xff0c;该功能限制了应用对外部存储的直接读写权限,要不然就是…

引入Minio

前置条件 官网&#xff1a;https://www.minio.org.cn/download.shtml#/kubernetes 命令 # 查看系统上的网络连接和监听端口信息 netstat -tpnl # 检查系统的指定端口占用情况 sudo netstat -tuln | grep 9000systemctl status firewalld # 临时关闭 systemctl stop firewall…

生信人写程序1. Perl语言模板及配置

生物信息领域常用语言 个人认为&#xff1a;是否能熟悉使用Shell(项目流程搭建)R(数据统计与可视化)Perl/Python/Java…(胶水语言&#xff0c;数据格式转换&#xff0c;软件间衔接)三门语言是一位合格生物信息工程师的标准。 生物信息常用语言非常广泛&#xff0c;我常用的有…

在macOS中开发的Django项目部署到局域网的Win10服务器上

由于windows10是日常办公电脑&#xff0c;没有服务器基本环境&#xff0c;部署工程耗费不少时间&#xff0c;记录一下。 1、安装Python 访问Python官方下载页面&#xff1a;Python Downloads&#xff0c;下载适用于Windows的安装程序并按照提示进行安装。开发环境python版本是…