python实现替换word中的关键文字(使用通配符)


Posted in Python onFebruary 13, 2020

环境:Python3.6

本文主要是通过win32com操作word,对word中进行常用的操作。本文以替换为例,讲解一下如何使用Python在word中使用“通配符模式”(类似于正则表达式)替换文本内容。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import win32com
from win32com.client import Dispatch
 
 
# 处理Word文档的类
 
class RemoteWord:
    def __init__(self, filename=None):
        self.xlApp = win32com.client.Dispatch('Word.Application') # 此处使用的是Dispatch,原文中使用的DispatchEx会报错
        self.xlApp.Visible = 0 # 后台运行,不显示
        self.xlApp.DisplayAlerts = 0  #不警告
        if filename:
            self.filename = filename
            if os.path.exists(self.filename):
                self.doc = self.xlApp.Documents.Open(filename)
            else:
                self.doc = self.xlApp.Documents.Add()  # 创建新的文档
                self.doc.SaveAs(filename)
        else:
            self.doc = self.xlApp.Documents.Add()
            self.filename = ''
 
    def add_doc_end(self, string):
        '''在文档末尾添加内容'''
        rangee = self.doc.Range()
        rangee.InsertAfter('\n' + string)
 
    def add_doc_start(self, string):
        '''在文档开头添加内容'''
        rangee = self.doc.Range(0, 0)
        rangee.InsertBefore(string + '\n')
 
    def insert_doc(self, insertPos, string):
        '''在文档insertPos位置添加内容'''
        rangee = self.doc.Range(0, insertPos)
        if (insertPos == 0):
            rangee.InsertAfter(string)
        else:
            rangee.InsertAfter('\n' + string)
 
    def replace_doc(self, string, new_string):
        '''替换文字'''
        self.xlApp.Selection.Find.ClearFormatting()
        self.xlApp.Selection.Find.Replacement.ClearFormatting()
        #(string--搜索文本,
        # True--区分大小写,
        # True--完全匹配的单词,并非单词中的部分(全字匹配),
        # True--使用通配符,
        # True--同音,
        # True--查找单词的各种形式,
        # True--向文档尾部搜索,
        # 1,
        # True--带格式的文本,
        # new_string--替换文本,
        # 2--替换个数(全部替换)
        self.xlApp.Selection.Find.Execute(string, False, False, False, False, False, True, 1, True, new_string, 2)
 
    def replace_docs(self, string, new_string):
        '''采用通配符匹配替换'''
        self.xlApp.Selection.Find.ClearFormatting()
        self.xlApp.Selection.Find.Replacement.ClearFormatting()
        self.xlApp.Selection.Find.Execute(string, False, False, True, False, False, False, 1, False, new_string, 2)
    def save(self):
        '''保存文档'''
        self.doc.Save()
 
    def save_as(self, filename):
        '''文档另存为'''
        self.doc.SaveAs(filename)
 
    def close(self):
        '''保存文件、关闭文件'''
        self.save()
        self.xlApp.Documents.Close()
        self.xlApp.Quit()
 
 
if __name__ == '__main__':
 
    # path = 'E:\\XXX.docx'
    path = 'E:/XXX.docx'
    doc = RemoteWord(path)  # 初始化一个doc对象
    # 这里演示替换内容,其他功能自己按照上面类的功能按需使用
 
    doc.replace_doc(' ', '')  # 替换文本内容
    doc.replace_doc('.', '.') # 替换.为.
    doc.replace_doc('\n', '')  # 去除空行
    doc.replace_doc('o','0')  # 替换o为0
    # doc.replace_docs('([0-9])@[、,,]([0-9])@', '\1.\2')  使用@不能识别改用{1,},\需要使用反斜杠转义
    doc.replace_docs('([0-9]){1,}[、,,.]([0-9]){1,}', '\\1.\\2')  # 将数字中间的,,、.替换成.
    doc.replace_docs('([0-9]){1,}[旧]([0-9]){1,}', '\\101\\2')   # 将数字中间的“旧”替换成“01”
    doc.close()

以上这篇python实现替换word中的关键文字(使用通配符)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中用keys()方法返回字典键的教程
May 21 Python
python 全局变量的import机制介绍
Sep 07 Python
python中文编码与json中文输出问题详解
Aug 24 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
python连接mongodb集群方法详解
Feb 13 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
python isinstance函数用法详解
Feb 13 #Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 #Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 #Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 #Python
Python使用docx模块实现刷题功能代码
Feb 13 #Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 #Python
Python3 读取Word文件方式
Feb 13 #Python
You might like
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python tkinter控件布局项目实例
2019/11/04 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
心理健康日活动总结
2014/05/08 职场文书
超市理货员岗位职责
2014/07/04 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
签字仪式主持词
2015/07/03 职场文书