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中执行shell命令的几个方法小结
Sep 18 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
Python 文件处理注意事项总结
Apr 10 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
Python类方法总结讲解
Jul 26 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采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
js表数据排序 sort table data
2009/02/18 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
Python3监控疫情的完整代码
2020/02/20 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Python实现简单猜数字游戏
2021/02/03 Python
HEMA法国:荷兰原创设计
2019/02/21 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
经济担保书范文
2014/04/02 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
环境卫生倡议书
2014/08/29 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫