本文讨论一下如果使用python来批量替换word中的内容。

一、目标:

在word文档中,将水果的名称由中文替换为英文。

而且我们有多份word文档。

二、实现:

使用了python-docx 这个库。

1、安装

使用pip 安装很方便

pip install python-docx

特别注意:python-docx这个库只能用来处理docx文件,不能进行doc文件的处理。

如果在Windows环境下, 可以使用 win32com模块,来批量把doc 文件转换为docx。

延伸一点:

doc文件与docx文件有什么不同呢?

  1. 存储方式的不同: doc 是二进制存储,docx是打包文件(docx文件可以解压,能看到里面的文件结构,主要是xml 等组成的打包文件);
  2. docx易于跨平台,docx更小;
  3. 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内容批量替换相关推荐

  1. python dict初始化大小_在Python中初始化/创建/填充Dict的Dict

    我必须在为我的研究编写代码时经常这样做.您将希望使用defaultdict包,因为它允许您添加键:值对在任何级别上,通过简单的分配.回答完你的问题我会给你看的.这是直接来源于我的一个程序.关注最后4行 ...

  2. python批量生成图片_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

  3. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  4. python简历数据提取_提取python简介

    书籍:掌握Python的网络和安全 Mastering Python for Networking and Security - 2018.pdf 简介 掌握Python的网络和安全 掌握Python ...

  5. python中级项目下载_中级Python复习:教程,项目思想和技巧

    python中级项目下载 本文旨在向Python初学者和开发人员介绍Python中使用的一些关键概念,这些概念一开始就没有讲授. 如果您可以创建二次方根求解器,则可以理解本文. 这些是我一天之内没有学 ...

  6. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础

    本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...

  7. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  8. python读取第二行_使用Python操作Excel(二):读取数据表

    上一节我们提到,使用openpyxl可以方便的对数据表进行操作,例如:抽象Excel数据并存入数据库 将数据库数据导出到Excel 给一个已存在的数据表追加信息 我们还介绍了一些Excel的基本术语, ...

  9. python画交互式地图_使用Python构建交互式地图-入门指南

    python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...

最新文章

  1. 网页静态化技术Freemarker
  2. spring 源码 找不到 taskprovider_一步一步构建Spring5源码
  3. IntelliJ IDEA 快捷键和设置
  4. java super()方法_Java super关键字的使用方法详解
  5. 上海市提出IDC建设指导意见,新建IDC限制PUE1.3以下
  6. (Mybatis)Mybatis简介和初步使用
  7. 大数据分析苏轼,你没看错,这些都是小学生完成的
  8. python os rename用法_Python os.rename() 方法
  9. java jni helloword_JNI入门教程之HelloWorld篇
  10. Linux内核网络协议栈4-创建socket(2)
  11. IDEA 创建类注释模板
  12. onvif 模拟摄像头_ONVIF协议测试工具(ONVIF Device Test Tool)
  13. 人生就是一个领域,一份爱,一杯茶
  14. VMware WorkStation虚拟机的安装及使用
  15. Windows主机和Linux主机之间连接网线共享网络上网设置
  16. 《蒋勋说宋词》 读后感
  17. 你可能不知道的关于Oracle Rac的事...
  18. uni-app 微信小程序分享功能河北银丹互联网科技有限公司
  19. 计算机程序设计员初级pdf,计算机程序设计员(实摩)国家职业标准.pdf
  20. 运动员和教练案例分析

热门文章

  1. lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
  2. ffmpeg php centos,Centos安装ffmpeg插件
  3. java 调用 spring,java中使用redis和spring中调用redis
  4. ajax是什么实现的步骤,AJAX使用步骤及实现过程
  5. 关闭使用ShellExecute打开的进程
  6. Winhex数据恢复笔记(五)
  7. 为什么博客园安卓端无法登陆,真服了
  8. 终于找到了。 图标搜索、UI设计、移动开发集中导航
  9. 操作系统概念学习笔记 4 操作系统结构和操作简述
  10. php---header函数的示例代码