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高手之路python处理excel文件(方法汇总)
Jan 07 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
python列表的逆序遍历实现
Apr 20 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Python函数中apply、map、applymap的区别
Nov 27 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/07/08 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
CSS常用网站布局实例
2008/04/03 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
Python中的字典遍历备忘
2015/01/17 Python
详解Python中的type()方法的使用
2015/05/21 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Django values()和value_list()的使用
2020/03/31 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
维德科技C#面试题笔试题
2015/12/09 面试题
本科生求职简历的自我评价
2013/10/21 职场文书
写好求职信第一句话的技巧
2013/10/26 职场文书
追悼会子女答谢词
2014/01/28 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
房产委托公证书
2014/04/08 职场文书
党员年终个人总结
2015/02/14 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python