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发送邮件接收邮件示例分享
Jan 21 Python
python开发简易版在线音乐播放器
Mar 03 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
Python迭代器定义与简单用法分析
Apr 30 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
Python中extend和append的区别讲解
Jan 24 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 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
BBS(php & mysql)完整版(四)
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
Python实现元素等待代码实例
2019/11/11 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
2014年安全生产大检查方案
2014/05/13 职场文书
实习单位指导教师评语
2014/12/30 职场文书
回复函格式及范文
2015/07/14 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL