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编写一个简单的FUSE文件系统的教程
Apr 02 Python
Python基础入门之seed()方法的使用
May 15 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python3去掉string中的标点符号方法
Jan 22 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
Django 实现jwt认证的示例
Apr 30 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 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基础学习之流程控制的实现分析
2013/04/28 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
vue 开发企业微信整合案例分析
2019/12/02 Javascript
python快速查找算法应用实例
2014/09/26 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
laravel使用redis队列实例讲解
2021/03/23 PHP
师范院校学生自荐信范文
2013/12/27 职场文书
财经学院自荐信范文
2014/02/02 职场文书
《石榴》教学反思
2014/03/02 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
灵山大佛导游词
2015/02/04 职场文书