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机器学习之决策树分类详解
Dec 20 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
pandas 选择某几列的方法
Jul 03 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
python 装饰器功能与用法案例详解
Mar 06 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 Python
用Python实现屏幕截图详解
Jan 22 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 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
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
JS实现简单省市二级联动
2019/11/27 Javascript
详解supervisor使用教程
2017/11/21 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
小学生元旦感言
2014/02/26 职场文书
工作决心书
2014/03/11 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
房屋所有权证明
2015/06/19 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js