• 【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是已经存在的文档。

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

    1.2📃设置起始位置

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

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

            Python代码实现如下:

    1. # 赋值对象
    2. search_range = doc.Content
    3. # 查找内容
    4. search_range.Find.Execute(FindText="起始位置")
    5. # 选中查找到的内容
    6. search_range.Select()
    7. # 光标左移
    8. word.Selection.MoveLeft()
    9. # 将光标位置赋予start
    10. start = word.Selection.Start.numerator
    11. print(start)

    1.3📃设置终止位置

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

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

            python代码实现如下:

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

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

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

            Python代码实现如下:

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

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

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

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

            Python代码实现如下:

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

    1.6📃完整python代码

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

    1. import win32com.client as win32
    2. from win32com.client import constants
    3. import os
    4. # 打开word应用程序
    5. word = win32.gencache.EnsureDispatch('Word.Application')
    6. # 是否可视化
    7. word.Visible = 0
    8. # 源文件路径
    9. file_path = r'D:/A.docx'
    10. # 打开
    11. doc = word.Documents.Open(file_path)
    12. # 光标start的查找
    13. # 赋值对象
    14. search_range = doc.Content
    15. # 查找内容
    16. search_range.Find.Execute(FindText="起始位置")
    17. # 选中查找到的内容
    18. search_range.Select()
    19. # 光标左移
    20. word.Selection.MoveLeft()
    21. # 将光标位置赋予start
    22. start = word.Selection.Start.numerator
    23. print(start)
    24. # 光标end的查找 同上
    25. search_range = doc.Content
    26. search_range.Find.Execute(FindText="结束位置")
    27. search_range.Select()
    28. word.Selection.MoveLeft()
    29. end = word.Selection.Start.numerator
    30. print(end)
    31. # 选取光标start到光标end的内容
    32. doc.Range(start, end).Select()
    33. # 复制
    34. word.Selection.Copy()
    35. # 粘贴的目标文件
    36. doc_new = word.Documents.Open('D:/B.docx')
    37. # 粘贴
    38. doc_new.Application.ActiveDocument.Range().Paste()
    39. # 关闭两个文件
    40. doc_new.Close()
    41. 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文档中的目的。

    参考:参考链接

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


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

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

  • 相关阅读:
    学习笔记-静态路由配置有来无回导致无法访问目标IP
    检查两个数组在维度,形状以及元素值上是否均等价 numpy.array_equiv()
    STM32 与 ARM 的联系
    pjudge#21651-[PR #4]猜猜看【交互】
    Android-Q 对 startActivity() 做了限制,怎么适配?
    超详细 | 实验室linux服务器非root账号 | 安装pip | 安装conda
    FFmpeg入门详解之6:VLC播放器简介
    文本中物流获取易语言代码
    docker部署单机版elasticsearch+kibana可视化管理页面
    等精度频率计的设计与验证
  • 原文地址:https://blog.csdn.net/qq_38308388/article/details/134068998