python dict批量选择_用python实现word内容批量替换
本文讨论一下如果使用python来批量替换word中的内容。
一、目标:
在word文档中,将水果的名称由中文替换为英文。
而且我们有多份word文档。
二、实现:
使用了python-docx 这个库。
1、安装
使用pip 安装很方便
pip install python-docx
特别注意:python-docx这个库只能用来处理docx文件,不能进行doc文件的处理。
如果在Windows环境下, 可以使用 win32com
模块,来批量把doc 文件转换为docx。
延伸一点:
doc文件与docx文件有什么不同呢?
- 存储方式的不同: doc 是二进制存储,docx是打包文件(docx文件可以解压,能看到里面的文件结构,主要是xml 等组成的打包文件);
- docx易于跨平台,docx更小;
- docx对于处理一些复杂对象比如公式、表格、图片更得心应手,因为可以通过xml的配置进行。
2、要使用的 python-docx 的基本用法
import docx
# 创建文档对象,获得word文档
doc = docx.Document(path)#每一段的内容
for para in doc.paragraphs:print(para.text)#每一段的编号、内容
for i in range(len(doc.paragraphs)):print(str(i), doc.paragraphs[i].text)
3、简单的替换函数
# 将想要替换的内容写成字典的形式,
# dict = {"想要被替换的字符串": "新的字符串"}
replace_dict = {"苹果":"apple","香蕉":"banana","猕猴桃":"Kiwi fruit","火龙果":"pitaya",
}
函数如下:
def check_and_change(document, replace_dict):"""遍历word中的所有 paragraphs,在每一段中发现含有key 的内容,就替换为 value 。 (key 和 value 都是replace_dict中的键值对。)"""for para in document.paragraphs:for i in range(len(para.runs)):for key, value in replace_dict.items():if key in para.runs[i].text:print(key+"->"+value)para.runs[i].text = para.runs[i].text.replace(key, value)return document
4、 一个完整的例子
环境:python ==3.7.4 , python-docx== 0.8.10
# coding=utf-8import os
from docx import Document# 放了一些docx 文件
old_file_path = "/Users/xxx/yyy/docx/"
# 生成新文件后的存放地址
new_file_path = "/Users/xxx/yyy/new_docx/"replace_dict = {"苹果": "apple","香蕉": "banana","猕猴桃": "Kiwi fruit","火龙果": "pitaya",
}def check_and_change(document, replace_dict):"""遍历word中的所有 paragraphs,在每一段中发现含有key 的内容,就替换为 value 。 (key 和 value 都是replace_dict中的键值对。)"""for para in document.paragraphs:for i in range(len(para.runs)):for key, value in replace_dict.items():if key in para.runs[i].text:print(key+"-->"+value)para.runs[i].text = para.runs[i].text.replace(key, value)return documentdef main():for name in os.listdir(old_file_path):print(name)old_file = old_file_path + namenew_file = new_file_path + nameif old_file.split(".")[1] == 'docx':document = Document(old_file)document = check_and_change(document, replace_dict)document.save(new_file)print("^"*30)if __name__ == '__main__':main()
三、运行结果
每一份word中,相应的内容替换成功。
python dict批量选择_用python实现word内容批量替换相关推荐
- python dict初始化大小_在Python中初始化/创建/填充Dict的Dict
我必须在为我的研究编写代码时经常这样做.您将希望使用defaultdict包,因为它允许您添加键:值对在任何级别上,通过简单的分配.回答完你的问题我会给你看的.这是直接来源于我的一个程序.关注最后4行 ...
- python批量生成图片_利用Python批量生成任意尺寸的图片
实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- python简历数据提取_提取python简介
书籍:掌握Python的网络和安全 Mastering Python for Networking and Security - 2018.pdf 简介 掌握Python的网络和安全 掌握Python ...
- python中级项目下载_中级Python复习:教程,项目思想和技巧
python中级项目下载 本文旨在向Python初学者和开发人员介绍Python中使用的一些关键概念,这些概念一开始就没有讲授. 如果您可以创建二次方根求解器,则可以理解本文. 这些是我一天之内没有学 ...
- python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础
本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...
- python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖
最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...
- python读取第二行_使用Python操作Excel(二):读取数据表
上一节我们提到,使用openpyxl可以方便的对数据表进行操作,例如:抽象Excel数据并存入数据库 将数据库数据导出到Excel 给一个已存在的数据表追加信息 我们还介绍了一些Excel的基本术语, ...
- python画交互式地图_使用Python构建交互式地图-入门指南
python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...
最新文章
- 网页静态化技术Freemarker
- spring 源码 找不到 taskprovider_一步一步构建Spring5源码
- IntelliJ IDEA 快捷键和设置
- java super()方法_Java super关键字的使用方法详解
- 上海市提出IDC建设指导意见,新建IDC限制PUE1.3以下
- (Mybatis)Mybatis简介和初步使用
- 大数据分析苏轼,你没看错,这些都是小学生完成的
- python os rename用法_Python os.rename() 方法
- java jni helloword_JNI入门教程之HelloWorld篇
- Linux内核网络协议栈4-创建socket(2)
- IDEA 创建类注释模板
- onvif 模拟摄像头_ONVIF协议测试工具(ONVIF Device Test Tool)
- 人生就是一个领域,一份爱,一杯茶
- VMware WorkStation虚拟机的安装及使用
- Windows主机和Linux主机之间连接网线共享网络上网设置
- 《蒋勋说宋词》 读后感
- 你可能不知道的关于Oracle Rac的事...
- uni-app 微信小程序分享功能河北银丹互联网科技有限公司
- 计算机程序设计员初级pdf,计算机程序设计员(实摩)国家职业标准.pdf
- 运动员和教练案例分析
热门文章
- lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
- ffmpeg php centos,Centos安装ffmpeg插件
- java 调用 spring,java中使用redis和spring中调用redis
- ajax是什么实现的步骤,AJAX使用步骤及实现过程
- 关闭使用ShellExecute打开的进程
- Winhex数据恢复笔记(五)
- 为什么博客园安卓端无法登陆,真服了
- 终于找到了。 图标搜索、UI设计、移动开发集中导航
- 操作系统概念学习笔记 4 操作系统结构和操作简述
- php---header函数的示例代码