【NLP】word复制指定内容到新的word文档

目录

1.📃📃完整python代码

1.1📃打开word

1.2📃设置起始位置

1.3📃设置终止位置

 1.4📃复制起始位置到终止位置的文档内容

1.5📃粘贴剪切板内容并保存至新的word文档中

1.6📃完整python代码

2.📋📋结果展示

2.1输入

2.2输出


需求:

复制word文档里的两个关键字(例如“起始位置”到“结束位置”)之间的内容到新的word文档。

解决方案:

python代码找到起始位置和终止位置,选择二者之间的内容采用.Copy()包和.Paste()包进行复制粘贴至新文档。

前提:安装win32包,通过pip install pywin32命令直接安装。话不多说,直接上代码。


1.📃📃完整python代码

1.1📃打开word

        基于win32包打开word应用程序,并设置word为可视化状态,否则word文档是隐藏的,无法在文件夹下查看到,此处需要注意,不可省略。

        定义好word打开程序就可输入文件路径进行打开了,注意此处的file_path是已经存在的文档。

# 打开word应用程序
word = win32.gencache.EnsureDispatch('Word.Application')
# 是否可视化
word.Visible = 0
# 源文件路径
file_path = r'D:/A.docx'
# 打开
doc = word.Documents.Open(file_path)

1.2📃设置起始位置

        设置起始位置的主要功能就是光标start的查找,FindText的内容是表示在该内容之后设置起始光标。主要实现步骤是:

  1. 查找字符“起始位置”,此处可根据自己的文档内容进行修改
  2. 此处的光标设置的是在FindText的内容左移,即FindText的内容之后,不包含FindText的内容。
  3. 将光标位置转换成数字,记作start

        Python代码实现如下:


# 赋值对象
search_range = doc.Content
# 查找内容
search_range.Find.Execute(FindText="起始位置")
# 选中查找到的内容
search_range.Select()
# 光标左移
word.Selection.MoveLeft()
# 将光标位置赋予start
start = word.Selection.Start.numerator
print(start)
 

1.3📃设置终止位置

        与起始位置查找一样,设置终止位置的主要功能就是光标end的查找,FindText的内容是表示在该内容之前设置起始光标。主要实现步骤是:

  1. 查找字符“结束位置”,此处可根据自己的文档内容进行修改
  2. 此处的光标设置的是在FindText的内容左移,即FindText的内容之后,不包含FindText的内容。
  3. 将光标位置转换成数字,记作end
  4. 此时的数据是一个很大的数字,因为它代表的不是字数,而是字符数,所以跟字数是对不上的,不需要管。

        python代码实现如下:

# 光标end的查找  同上
search_range = doc.Content
search_range.Find.Execute(FindText="结束位置")
search_range.Select()
word.Selection.MoveLeft()
end = word.Selection.Start.numerator
print(end)

 1.4📃复制起始位置到终止位置的文档内容

        这一步比较简单,选取光标start到光标end的内容,调用word.Selection.Copy()命令复制选中文档内容。

        Python代码实现如下:

# 选取光标start到光标end的内容
doc.Range(start, end).Select()
# 复制
word.Selection.Copy()

1.5📃粘贴剪切板内容并保存至新的word文档中

        这一步主要是将上一步复制的内容粘贴到新文档,操作步骤如下:

  1. 打开新的word文档,注意此时的文档也是需要提前建好的,是个空白文档。
  2. 调用.Application.ActiveDocument.Range().Paste()库进行文档粘贴操作
  3. 注意此时的主要工作完成了,但是一定要记得关闭两个文档,关闭文档的方法就是调用.Close()库进行文档关闭。

        Python代码实现如下:

# 粘贴的目标文件
doc_new = word.Documents.Open('D:/B.docx')
# 粘贴
doc_new.Application.ActiveDocument.Range().Paste()
# 关闭两个文件
doc_new.Close()
doc.Close()

1.6📃完整python代码

        完整的python代码如下,包含以上4个步骤,可直接复用。

import win32com.client as win32
from win32com.client import constants
import os
# 打开word应用程序
word = win32.gencache.EnsureDispatch('Word.Application')
# 是否可视化
word.Visible = 0
# 源文件路径
file_path = r'D:/A.docx'
# 打开
doc = word.Documents.Open(file_path)
# 光标start的查找
# 赋值对象
search_range = doc.Content
# 查找内容
search_range.Find.Execute(FindText="起始位置")
# 选中查找到的内容
search_range.Select()
# 光标左移
word.Selection.MoveLeft()
# 将光标位置赋予start
start = word.Selection.Start.numerator
print(start)
 
# 光标end的查找  同上
search_range = doc.Content
search_range.Find.Execute(FindText="结束位置")
search_range.Select()
word.Selection.MoveLeft()
end = word.Selection.Start.numerator
print(end)
 
# 选取光标start到光标end的内容
doc.Range(start, end).Select()
# 复制
word.Selection.Copy()
# 粘贴的目标文件
doc_new = word.Documents.Open('D:/B.docx')
# 粘贴
doc_new.Application.ActiveDocument.Range().Paste()
# 关闭两个文件
doc_new.Close()
doc.Close()

2.📋📋结果展示

2.1输入

        输入word文档A.docx内容如下:

这是个测试文件: 请复制以下内容到新文档,起始位置攀登航天科技高峰总书记指明方向 - 中国日报网

在建设航天强国之路上勇攀科技高峰.是中国几代航天人探索太空的坚定的信念、执着的追求、套斗的行为准则。结束位置

        为了清晰看到起始位置和结束位置,特地将两个位置加粗显示,在word中查看A.docx

2.2输出

        经过第一节的Python代码,把两个位置之间的内容复制到一个新文档中并保存新文档。保存出来的B.docx内容如下:

攀登航天科技高峰总书记指明方向 - 中国日报网

在建设航天强国之路上勇攀科技高峰.是中国几代航天人探索太空的坚定的信念、执着的追求、套斗的行为准则。

        可以看到,起始位置之前的内容全部没有了,终止位置之后的内容全部没有了,只有起始位置到终止位置之间的内容,在word中显示B.docx内容如下:

PS:该方法可以保留文档格式段落保持不变,非常奈斯✅。

总结:

语句win32库打开和保存word文档,并根据字符信息查看起始位置和终止位置,并对二者之间的内容进行复制,并粘贴到一个新word文档中,实现依据word文档内容选择特定内容到新的word文档中的目的。

参考:参考链接

整理不易,欢迎一键三连!!!


送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zy_destiny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值