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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
python对字典进行排序实例
Sep 25 Python
举例讲解Python中is和id的用法
Apr 03 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
解决yum对python依赖版本问题
Jul 05 Python
Python使用lambda表达式对字典排序操作示例
Jul 25 Python
Flask框架模板继承实现方法分析
Jul 31 Python
Python 获取项目根路径的代码
Sep 27 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 Python
python自动计算图像数据集的RGB均值
Jun 18 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/09/10 PHP
PHP打印输出函数汇总
2016/08/28 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
深入了解js原型模式
2019/05/30 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
Python与shell的3种交互方式介绍
2015/04/11 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
公司司机岗位职责范本
2014/03/03 职场文书
学习雷锋倡议书
2014/04/15 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
教师工作表现评语
2014/12/31 职场文书
安全生产培训心得体会
2016/01/18 职场文书
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python