如果你经常与Excel或Word打交道,那么从两份表格/文档中找到不一样的元素是一件让人很头疼的工作,当然网上有很多方法、第三方软件教你如何对比两份文件。本文就将以两份真实的Excel/Word文件为例,讲解如何使用Python光速对比并提取文件中的不同之处!

比较Excel

为了方便说明,我创建了一个简单的Excel用于示例

可以看到上方两个Excel表格中共有五处不同,现在我们使用Python来快速定位这五处不同,这次不需要openpyxl,使用Pandas就能轻松搞定,首先导入相关库并读取数据。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

import pandas as pd import numpy as np df1 = pd.read_excel('data1.xlsx') df2 = pd.read_excel('data2.xlsx')

其实在Pandas中一行代码就能找到两个DataFrame的不同

可以看到,如果一样的数据就是NaN,而变化的数据则以它的值存储,但是如果这么做的话,我们仅仅找到数据不同的位置,并且数据量大的话盯着找到不同也挺消耗时间的,所以我们进一步研究。先换一种方式找到不同的值

接着再使用NumPy根据True/False定位元素位置,同时将值的改变写入原表格并保存

rows,cols=np.where(comparison_values==False) for item in zip(rows,cols):    df1.iloc[item[0], item[1]] = '{} --> {}'.format(df1.iloc[item[0], item[1]],df2.iloc[item[0], item[1]]) df1.to_excel('diff.xlsx',index=False,header=True)

现在就生成了一个新的Excel来提示我们哪里发生了变化

这样看起来就舒服了很多(高亮是手动的),当然在进行两个Excel比较的时候一定要注意这两个Excel的数据格式要差不多!最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

比较Word

两份Word比较起来相对于Excel就困难一点。首先我们还是创建两份有区别的Word文档,内容取自百度百科中的Python介绍。

左边的为原始word右边的word是我修改了几处的文档, 现在我们用Python来快速找到两份文档的不同。读取文件使用到的是docx库 ,因为涉及到中文所以我们需要先读取docx文件,然后分段再根据标点符号分句,具体代码如下

`def getText(wordname):
   ‘’’
提取文字
‘’’
   d = Document(wordname)
   texts = []
   for para in d.paragraphs:
       texts.append(para.text)
   return texts

def is_Chinese(word):
   ‘’’
识别中文
‘’’
   for ch in word:
       if ‘\u4e00’ <= ch <= ‘\u9fff’:
           return True
   return False

def msplit(s, seperators = ‘,|.|?|,|。|?|!|、’):
   ‘’’
根据标点符号分句
‘’’
   return re.split(seperators, s)

def readDocx(docfile):
   ‘’’
读取文档
‘’’
   print(f"正在读取{docfile}")
   paras = getText(docfile)
   segs = []
   for p in paras:
       temp = []
       for s in msplit§:
           if len(s) > 2:
               temp.append(s.replace(’ ', “”))
       if len(temp) > 0:
           segs.append(temp)
   return segs`

使用上面这段代码读一下两个word试试

可以看到我们的word文件已经按照不同段落分好句存在两层list中,所以接下来的问题就转换为比较两个list,而这又是我们熟悉的

def comparsion(doc1,doc2,p,s):    if doc1 == doc2:        print('两个word完全一致')    else:        if doc1[p][s] != doc2[p][s]:            print(f"第{p+1}段,第{s+1}句不相同: {doc1[p][s]} ----> {doc2[p][s]}")

上面的判断为最简单的形式:两个word中仅有文字改变,而段落、句子数量均没有改变,我们来试一下效果

只要一秒,Python就找到了两份word文档之间的不同之处并定位!最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

通过介绍如何使用Python来对两个Excel/Word文件进行比较,我想你应该体会到了Python的强大之处,其实思路无非就是读取文件、定位之处并标记。但更重要的是你在日常工作学习时是否可以想到用Python去解决那些繁琐费力的流程,学会使用Python合理偷懒才是我写办公自动化系列的目的。

需要的源码的可以私信小编获取

Python办公自动化|光速对比并提取两份Word/Excel中的不同元素相关推荐

  1. Python办公自动化(一):从Word到Excel

    有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似格式的表格细栏,每个栏目包括的信息有: 日期 发文单位 文号 标题 签收栏 需要提取其中加粗的这三项内容到Exc ...

  2. Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet

    Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet 发表时间:2020-04-26 问题:从当前目录或子目录中查询符合条件的excel表格,并从这 ...

  3. 从Word中批量提取数据到Excel中,Word导出到Excel的利器

    从Word文件中取值并导出到Excel中,有现成的工具可实现. 不过要通过工具来批量取值,Word文件中的目标字符必须有规律才行,例如都处于表格中,或者都有下划线,只要目标符合指定的规则就可以批量提取 ...

  4. 使用python爬取网站数据并写入到excel中

    文章目录 前言 一.使用python爬取网上数据并写入到excel中 例子一: 例子二: 二.工具类 总结 前言 记录一下使用python将网页上的数据写入到excel中 一.使用python爬取网上 ...

  5. 怎么批量提取文件名到excel中?

    怎么批量提取文件名到excel中?现在是互联网时代,我们做任何事情都离不开电脑的使用,有些时候需要将文件名称批量导出,有时我们需要将很多的文件名称汇总到一个Excel表格中,大多数人在第一次碰到的时候 ...

  6. 如何在Adobe Acrobat中实现像Word/Excel中的Ctrl+Z和Ctrl+Y的撤回还原功能(涉及搜狗输入法热键冲突)

    如何在Adobe Acrobat中实现像Word/Excel中的Ctrl+Z和Ctrl+Y的撤回还原功能(涉及搜狗输入法热键冲突) 在用来看PDF的Adobe Acrobat里面的Ctrl+Z确实是和 ...

  7. python办公自动化(八)python-docx实现word的批量合并、制作邀请函以及数据的情感分析

    合并多个word文件 现有3个word文档,需要把3个文档里的内容放到新的文档里,实现将多个word文件合并到一个word文件里. 1.获取文件夹下所有文件的路径 2.合并多个docx文件 实现了按顺 ...

  8. 使用python提取所有word文件中的所有图片

    目录 前言 代码 GIF示例 附:doc转docx 代码 前言 办公中,偶尔会碰到一种情况,需要提取word文档中的图片,决定写这样一款工具自动提取图片. 关于脚本的使用: 情景1:如果你拿到的是一个 ...

  9. Python使用标准库zipfile提取docx文档中所有图片

    清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30 ============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔 ...

最新文章

  1. 大佬来告诉你在遇到B站崩了,如何防止类似事故的出现?
  2. 香港连续25年被评为全球最自由经济体
  3. ElasticSearch wildcard查询(英文检索)
  4. 多线程003 - 再谈CyclicBarrier
  5. flutter text 自动换行_Flutter 系列博客——05 StatelessWidget vs StatefulWidget
  6. 逆向链表c语言,C语言逆向打印双向链表程序
  7. stardict安装及其他
  8. 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
  9. 读《About Face 4 交互设计精髓》4
  10. 安装orbslam2
  11. 读者福利,单独赠书啦!这次的书你肯定喜欢!
  12. android adb am start,Android adb shell am start命令总结
  13. Android MessageQueue与Message详解
  14. 区块链平台架构设计的知识图谱
  15. openwrt运行n2n服务器,Windows下使用N2N搭建局域网,全球局域网(重写)
  16. 文华财经基本函数及语法
  17. matlab获取2的整数次幂,如何快速判断正整数是2的N次幂
  18. Pygame显示文字
  19. 人人网移动开发架构及相关服务器架构
  20. 广义Pareto分布---极值理论的学习3

热门文章

  1. [shell][001] [advanced]定制化自己的shell命令
  2. java.util.zip.zipexception_Java 压缩zip异常,java.util.zip.ZipException: duplicate entry: 问题...
  3. ue4光追降噪_【魔改UE4】后记_焦散效果总结
  4. n1运行linux,斐讯 N1 运行 ArchLinuxARM
  5. java操作mysql临时表_Java开发网 - 系统临时表使用问题
  6. vivo手机系统升级后没有服务器,为什么安卓手机升级到了12GB还没有iPhone 4GB运行快呢?...
  7. java final 初始化_[转]java static final 初始化
  8. python两列相乘_如何将pandas中具有不同索引的两列相乘?
  9. python第三方zip_python第三方包的几种安装方式
  10. python软件打不开_ubuntu装python3.1.1之后出错,软件中心打不开,不能重装。尝试sudo apt-get -f install报error...