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中的json的基本使用方法
Dec 21 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
详解python和matlab的优势与区别
Jun 28 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python十进制转二进制的详解
Feb 07 Python
Django自带的用户验证系统实现
Dec 18 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 Python
用python实现监控视频人数统计
May 21 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
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
List Installed Software Features
2007/06/11 Javascript
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
python如何更新包
2020/06/11 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
大学四年的个人自我评价
2014/01/14 职场文书
颁奖典礼主持词
2014/03/25 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
大跃进口号
2014/06/16 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
谢师宴邀请函
2015/02/02 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技