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 相关文章推荐
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
python实现简单中文词频统计示例
Nov 08 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
代码实例讲解python3的编码问题
Jul 08 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
简述 Python 的类和对象
Aug 21 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 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
php数组去重复数据示例
2014/02/25 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
Js基础学习资料
2010/11/23 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
python 导入数据及作图的实现
2019/12/03 Python
python获取引用对象的个数方式
2019/12/20 Python
python和php哪个容易学
2020/06/19 Python
高三历史教学反思
2014/01/09 职场文书
七一建党节演讲稿
2014/09/11 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
从原生JavaScript到React深入理解
2022/07/23 Javascript