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 01 Python
python基础教程之分支、循环简单用法
Jun 16 Python
Python之批量创建文件的实例讲解
May 10 Python
Python处理中文标点符号大集合
May 14 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
python实现趣味图片字符化
Apr 30 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
django models里数据表插入数据id自增操作
Jul 15 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
Python实现的knn算法示例
2018/06/14 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
python statsmodel的使用
2020/12/21 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
汽车销售求职自荐信
2013/10/01 职场文书
优秀员工自荐书
2013/12/19 职场文书
2013年员工自我评价范文
2013/12/27 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
经理助理岗位职责
2014/03/05 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
应聘教师自荐书
2014/06/16 职场文书
2015年采购工作总结
2015/04/10 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
移除Selenium中window.navigator.webdriver值
2022/06/10 Python