-
2022-07-11 14:22:23
写这个代码,完全是因为交作业的时候要一个人交六份,一个一个的替换里面的内容太慢而且繁琐。(十分痛苦)
为了以后交作业方便,用python实现了,只要一个人作业写好,直接替换名字和学号并保存。(非常好用)
一个简单的代码,为啥我之前没写啊!!!这都快毕业了!!!!!😢😢😢
一、Python-docx库
python-docx是一个处理word文档的Python第三方库,它支持读取、查询以及修改doc、docx等格式文件,并能够对word常见样式进行编程设置,包括字符样式、段落样式、表格样式、页面样式等,进一步可以使用这个库实现添加和修改文本、图像、样式和文档等功能。
简单来说python-docx库,可以对word文档的完美操作。
二、Python-docx的安装
通过cmd使用pip安装Python-docx:(这里使用了豆瓣的镜像,下载速度飞快!)
pip install python-docx -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pip install python-docx #也可以不使用国内镜像 直接安装
其他镜像网站,自行选择:
中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/ 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云: https://mirrors.aliyun.com/pypi/simple/ 豆瓣: http://pypi.douban.com/simple/
三、批量替换word文档内容-代码实现
#打开一个docx import docx doc = docx.Document('a.docx') #打开一个word文档 #替换内容 for para in doc.paragraphs: para.text = para.text.replace('old', 'new')#old为原内容,new为要替换的内容 para.text = para.text.replace('old', 'new')#此代码可同时替换多个不同字段 #保存 doc.save('b.docx')保存为新的文件
更多相关内容 -
【自动化办公】python批量替换word中的内容
2022-07-19 17:34:35python 替换docx文档中内容background
例行吐槽:由于各种原因,放弃了目标检测这条路,换条路走走。
入职普普通通行政文员,搞搞事情。
发现有很多文件其实只是里面的一些东西需要替换,(其实用word的查找替换也可以,不过,搞搞事情嘛)。
模板中使用占位符,然后替换成数据。1.导入包读取文件
from docx import Document from docx.shared import Pt #磅数 from docx.oxml.ns import qn #chinese #读取文件 document=Document('/Users/apple/Desktop/xxx.docx')
2.定义替换函数(这里代码非原创,忘记哪里看到的了orz)
def change_text(old_text, new_text,document): #遍历文档内所有段落 all_paragraphs = document.paragraphs for paragraph in all_paragraphs: for run in paragraph.runs: if old_text in run.text: run.text = run.text.replace(old_text, new_text) #遍历文档内所有表格 all_tables = document.tables for table in all_tables: for row in table.rows: for cell in row.cells: for paragraph in cell.paragraphs: for run in paragraph.runs: if old_text in run.text: run.text = run.text.replace(old_text, new_text)
3. Input输入new_text与old_text构成字典
#输入公司名以及报价 G_list=[] company_bonus=dict() for i in range(1,4): G_name=input("公司名字:") G_bj=input("公司报价:") G_list.append(G_name) G_list.append(G_bj) company_bonus['G%d'%(i)] = G_name company_bonus['B%d'%(i)] = G_bj
4. 替换
for k,v in company_bonus: old_text = f'{k}' new_text = f'{v}' replaceStr(old_text, new_text) #保存文本 doc.save('/Users/apple/Desktop/xxxx.docx')
-
python实现替换word中的关键文字(使用通配符)
2020-09-17 23:01:59今天小编就为大家分享一篇python实现替换word中的关键文字(使用通配符),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
用Python批量替换多个Word文件中的文字
2021-02-14 23:39:04'''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for para in doc.paragraphs: # for...定义函数info_update。只需要向其中传入目标文件路径,待替换的词和新词即可
import docx def info_update(doc,old_info, new_info): '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for para in doc.paragraphs: # for run in para.runs: run.text = run.text.replace(old_info, new_info) #替换信息 #读取表格中的所有单元格,找到需替换的信息进行替换 for table in doc.tables: for row in table.rows: for cell in row.cells: cell.text = cell.text.replace(old_info, new_info) #替换信息
传入需要替换的原文件
import os #用于获取目标文件所在路径 path="data/" # 文件夹路径 files=[] for file in os.listdir(path): if file.endswith(".docx") and file.startswith("公司"): #排除文件夹内的其它干扰文件,只获取word文件 files.append(path+file) files #打印结果 ['data/公司001合同.docx', 'data/公司002合同.docx', 'data/公司003合同.docx', 'data/公司004合同.docx', 'data/公司005合同.docx', 'data/公司006合同.docx', 'data/公司007合同.docx', 'data/公司008合同.docx', 'data/公司009合同.docx', 'data/公司010合同.docx']
根据替换条件替换后保存
for file in files: doc = docx.Document(file) info_update(doc,"商贸", "仁和") doc.save("data/替换结果/{}".format(file.split("/")[-1])) print("{}替换完成".format(file)) #打印结果 data/公司001合同.docx替换完成 data/公司002合同.docx替换完成 data/公司003合同.docx替换完成 data/公司004合同.docx替换完成 data/公司005合同.docx替换完成 data/公司006合同.docx替换完成 data/公司007合同.docx替换完成 data/公司008合同.docx替换完成 data/公司009合同.docx替换完成 data/公司010合同.docx替换完成
如果要替换指定地方的关键字,先获取关键字所在段落。
#获取词"商贸"所在段落 import docx #导入docx库 doc = docx.Document("data/含干扰词/特殊_含干扰词.docx") #打开word文件 text=[] #新建一个空列表text,然后将word文档中的所有段落对应的文本提取并存入这个列表。 #列表是可以使用索引函数的,而列表里面元素的索引正好对应段落的索引。 for para in doc.paragraphs: #读取word中的每个段落 text.append(para.text) print(len(text)) target_index=[] #空列表target_index,用于存储包含“商贸”一词的字符串在列表text中的索引 for i in text: if "商贸" in i: target_index.append(text.index(i)) target_index #77 #[15, 26, 32, 38, 66]
为了验证是否准确,我们可以打印看一下相应索引对应的段落是否真的包含“商贸”一词。如下打印结果显示,结果很理想。
for j in target_index: print(doc.paragraphs[j].text) ’‘’乙方:ABC商贸有限责任公司 1.交货方法:由乙方送货(国家主管部门规定有送货办法的,按规定的办法执行;没有规定送货办法的,按双方协议执行);商贸 1.所有货物由乙方送到交货地点且甲方确认收货后5天内,由甲乙双方共同对货物的包装、 外观、数量、商标、型号、规格及性能等进行验收,签署检验报告。如乙方未按约定到甲 方指定地点参加检验的,应视为乙方对甲方单方检验的结果予以确认。验收标准执行合同 规定的货物质量标准。商贸 总价指甲方的交货价格,该价格应包含货物价格、通关费、包装费、物流费、装卸费、 保险费、在甲方指定场所的安装调试费、必要的培训费以及增值税等一切费用。在乙 方完全履行本合同下全部义务的情形下,除非另有书面约定,否则合同金额是甲方应 当向乙方支付的全部费用 。商贸 本合同自双方法定代表人或委托代理人签字盖章后生效,至合同条款履行完毕时终止。商贸‘’‘
因为我们只替换第一、第三、第六个“商贸”为“仁和”,而第六个在表格中。所以需要改一下原来的替换函数info_update,命名为新的函数info_update_new,我们在函数内指定只替换段落15和32中的目标词,表格中的目标词也继续替换。
import docx def info_update_new(doc,old_info, new_info): '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for i in [15,32]: para=doc.paragraphs[i] for run in para.runs: run.text = run.text.replace(old_info, new_info) #替换信息 #读取表格中的所有单元格,找到需替换的信息进行替换 for table in doc.tables: for row in table.rows: for cell in row.cells: cell.text = cell.text.replace(old_info, new_info) #替换信息
用于获取目标文件所在路径
import os #用于获取目标文件所在路径 path="data/含干扰词/" # 文件夹路径 files=[] for file in os.listdir(path): if file.endswith(".docx"): #排除文件夹内的其它干扰文件,只获取word文件 files.append(path+file) for file in files: doc = docx.Document(file) info_update_new(doc,"商贸", "仁和") doc.save("data/替换结果/{}".format(file.split("/")[-1])) print("{}替换完成".format(file)) #data/含干扰词/特殊_含干扰词.docx替换完成
-
python处理自动化任务之同时批量修改word里面的内容的方法
2020-09-18 18:38:42在本篇文章里小编给各位整理的是一篇关于利用python处理自动化任务之同时批量修改word里面的内容的文章,需要的可以参考学习下。 -
python实现word内容、excel内容、文件夹、文件名的查找与替换的批处理
2020-07-03 22:11:35用python实现word内容 excel内容 文件名 文件夹名字的查找与替换。可以以当前路径为基础深度优先搜索各级文件夹,进行内容和文件名字的查找与替换 -
python批量修改word文档内容
2020-04-28 17:17:47python批量修改word文档内容实现的目标
批量修改word文档内容,此脚本直接修改文件,不是另存为,建议先copy再修改。多级目录结构对脚本没有影响,脚本会遍历"path"下所有目录以docx结尾文档。
用到的python模块
pip install python-docx
脚本内容
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import docx import sys import datetime if sys.getdefaultencoding() != 'utf-8': reload(sys) sys.setdefaultencoding('utf-8') #两个日志 def log(text): err_log = path + u'\替换出错列表.txt' with open( err_log,"a+" ) as f: f.write(text) f.write('\n') def log2(text): tlog = path + u'\替换文档列表.txt' with open( tlog,"a+" ) as f: f.write(text) f.write('\n') #替换函数(文档名称,替换字典) def info_update(doc,replace_dict): #替换文档中所有文字内容 for para in doc.paragraphs: #print(para.runs) for run in para.runs: #从字典中对比替换内容 for key, value in replace_dict.items(): if key in run.text: run.text = run.text.replace(key,value) #替换文档中表格中的内容 for table in doc.tables: for row in table.rows: for cell in row.cells: #从字典中对比替换内容 for key, value in replace_dict.items(): if key in cell.text: cell.text = cell.text.replace(key,value) def main(replace_dict): #遍历目录中的docx文档 for parent, dirnames, filenames in os.walk(path): for fn in filenames: filedir = os.path.join(parent, fn) if fn.endswith('.docx'): nowtime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') try: #定义文档路径 doc = docx.Document(filedir) #调用函数修改文档内容 info_update(doc,replace_dict) #保存文档 doc.save(filedir) #写入修改日志 log2(nowtime + ' ' + filedir + ' ----完成') print(nowtime + ' ' + filedir + ' ----完成') except Exception as e: #写入修改失败日志 log(nowtime + ' ' + filedir+ ' ----失败') if __name__ == '__main__': #需替换文档所在目录,注意windows目录要写两个反斜杠 path = u'C:\\Users\\user\\Desktop\\1' replace_dict = { '大哥':'小弟', '123':'345', 'come':'go' } main(replace_dict) print('----全部替换完成----')
-
python word文档文字批量替换与删除
2022-02-08 09:09:12python word文档文字批量替换与删除 当遇到需要进行大量文档的内容进行替换或者删除(替换为空)的操作时,可以借鉴思路。 -
自学Python:批量替换WORD文档里的关键词
2021-11-06 16:50:48那如果是很多个WORD文件需要马上替换完毕,那就需要花非常多的重复时间,使用Python代码可以轻松完成。 下面假定我们要同时做两个修改,把张三改成李四,把错别字订立改为签订,输入完整代码: from pathlib import ... -
用python实现批量替换word文件中的文字、word文件的文件名
2021-06-19 19:03:411、用python批量替换word文件中的文字。 会议文件。每次的会议文件格式比较固定,但是会议时间、会议届次不同,想用python实现批量替换。 例如:用“第二届”替换“第一届”,“第二次会议”替换“第一次会议”,... -
python win32com 库批量替换word文件内容
2020-12-14 23:21:47前言win32com 模块主要为 Python 提供调用 windows 底层组件对 word、Excel、PPT 等进行...实例代码下方代码实现批量替换当前路径下word文档的指定文本内容。import win32com.clientimport osimport timedef update_... -
python word文档批量替换
2021-06-04 13:35:29pip install python-docx 具体代码 import docx # 被替换的词语 replace_dict = { '{{transaction}}': 'lm', '{{wallet}}': '556', '{{aFrom}}': '998', } #生产docx文档对象 doc = docx.Document('logo/23.... -
python批量替换多个word文档内容
2020-11-24 08:53:45替换文档关键词 def replace_word(self, doc, before_words, after_words): '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' # 读取段落中的所有run,找到需... -
使用python替换word文档部分内容
2021-10-14 10:23:45第一种:如果不在乎原有文章的格式,比如把word文档里的需要替换的字符串替换成我是替换后的字符串可以使用以下代码 doc = docx.Document('test.docx') for paragraph in doc.paragraphs: if '需要替换的字符串' ... -
python脚本(批量替换文件夹及其子文件夹下,Excel表格中字符串)
2018-10-17 16:59:18该脚本可以批量替换 指定目录(包含子文件夹)下Excel表格的字符串。 ※1.请确保已经安装python/2.请确保已经安装openpyxl模块(安装方法参照百度)。 ※脚本使用方法 1.执行脚本 2.按照提示输入Excel表格的路径。... -
python批量替换页眉页脚实例代码
2020-09-20 20:56:24主要介绍了python批量替换页眉页脚实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下 -
使用python-docx实现对word文档里的字符串、图片批量替换
2022-07-05 14:29:20最近碰到一个需求,需要对word模版里的内容进行统一替换,替换内容比较多。从网上查到了很多种基于python-docx 的做法,但都有一定的缺陷,不能适用于各种场景。网上的做法整体是两种:相对比较好的解决办法:对runs... -
用python批量处理word文档
2021-01-29 22:15:58应我家领导要求,开发一个word文档批处理脚本,涉及word文档、excel表格、文件存取、排序与索引、简单GUI等内容,前期针对各分项功能实现写了几篇小文章,现在将总体思路记录一下,作为这个系列的完结篇。... -
利用python批量修改word文档页眉
2022-02-21 23:23:34工作需要需要把一批word文档的页眉修改成统一名称,在网上看到一些文章,自己写了代码,记录免得未来忘了。 首先安装python-docx,命令行运行: pip install python-docx -i ... -
python批量将word转化为pdf(python办公)
2021-12-04 17:09:48word = wc.Dispatch('Word.Application') #glob批量获取指定目录下指定的所有文件的路径,返回路径列表。 files = glob.glob("D:\\毛概\\*.doc") print(files) for file_path in files: names = re.fi -
python自动化办公之word文本框内容批量修改
2022-04-02 13:59:21使用word批量制作证书,发现制作好人证书单个保存时有点麻烦, 特用python实现批量修改word文本框内容,生成单个word文件。 本代码段中涉及word文档包含一张底图图片,及两个文本框。其他童鞋有需要修改多个文本框... -
python批量修改word表格实例尝试(python-docx模块)
2021-07-03 14:40:22因为这是word表格,不能用Excel中的随机函数,且表格较多(60几个),手动修改浪费时间。所以选用python来解决该问题。 思路:类似于网页爬虫,利用docx包读取文件 1、安装python-docx:pip install python-docx ... -
python批量替换
2020-11-20 17:43:36本文讨论一下如果使用python来批量替换word中的内容。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧一、目标:在word文档中,将水果的名称由中文替换为英文。而且我们有多份word文档。二、实现:... -
Python将Excel中数据批量导出到Word模板中生成新的文件
2019-08-07 22:45:55windows下,使用python 将Excel中数据批量导出到Word模板中生成新的文件 -
实例14:用Python批量替换多个Word文件中的文字
2020-12-18 12:57:04此处介绍一下如何使用Python批量替换多个Word文件中的文字,即将“商贸”替换为“贸易”。我们先去到Word文件中,查找一下“商贸”这个词出现了多少次。下图可见,运气不错,只出现了两次,一次在正文的段... -
python+docx批量替换docx文件文本
2020-03-18 18:13:10搜索文档中是否包含指定词汇,批量替换 暂只支持docx文本替换,若文档中包含表格图片等信息会自动跳过 添加支持表格功能,并可读取csv文件形成关键字 -
python win32 批量修改替换excel和word里的内容 自动化办公
2022-04-11 23:38:58python win32 批量修改替换excel和word里的内容 自动化办公