当前位置: 首页 > news >正文

python-比较Excel两列数据,并分别显示差异

利用 openpyxl 模块,操作Excel,比较Excel两列数据,并分别显示差异

表格数据样例如下图

A,B两列是需要进行比较的数据(数据源为某网站公开数据);C,D两列是比较结果的输出列

A,B两列数据大都是通过半角逗号分割的人名,且排序为乱序,最后需要得到 C列:A有B无,D列:A无B有 两列数据

试过用 Beyond Compare,但效果一般;方方格子还有其他的倒是没试过

Python 源码如下

#-*- coding: utf-8 -*-import openpyxldef compare(path):# openpyxl 加载指定表格(操作时,表格需要为关闭状态)wb = openpyxl.load_workbook(path)# 指定需要操作的 表格页面ws = wb['Sheet']# A列数据col_a = []# B列数据col_b = []col_c = []col_d = []# 没有对A,B列中空数据进行特殊处理,如有需要,自行修改# 将A列数据拼接为listfor col in list(ws.columns)[0]:col_a.append(str(col.value))# 将B列数据拼接为listfor col in list(ws.columns)[1]:col_b.append(str(col.value))for i in range (0, len(col_a)):# A有B无s_a = ''# A无B有s_b = ''# 根据指定分隔符对表格内容进行分隔,如有多种分隔符,需要替换成同一种col_c = col_a[i].split(",")col_d = col_b[i].split(",")# 第三列数据为 A有B无for m in range(0, len(col_c)):if col_b[i].find(col_c[m]) == -1:s_a = s_a + col_c[m] + ','ws.cell(i+1, 3).value = s_a #末尾会加上 , 不需要的话,改成 ws.cell(i+1, 3).value = s_a[:-1]# 第四列数据为 A无B有for n in range(0, len(col_d)):if col_a[i].find(col_d[n]) == -1:s_b = s_b + col_d[n] + ','ws.cell(i+1, 4).value = s_b #末尾会加上 , 不需要的话,改成 ws.cell(i+1, 4).value = s_b[:-1]# 保存上述操作,不写这句,表格内容不会保存wb.save(path)def main():# 指定表格路径excel_path = r'.\测试数据.xlsx'compare(excel_path)if __name__ == '__main__':main()

http://www.lryc.cn/news/254889.html

相关文章:

  • RT-DETR手把手教程:NEU-DET钢材表面缺陷检测任务 | 不同网络位置加入EMA注意力进行魔改
  • WebGL笔记:矩阵缩放的数学原理和实现
  • 处理器中的TrustZone之安全状态
  • 开发一款短剧视频小程序软件多少钱?
  • 『PyTorch学习笔记』分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行
  • 揭秘C语言结构体:通往内存对齐的视觉之旅
  • java中可重入锁的作用是什么?
  • 适合炎热天气的最佳葡萄酒有哪些?
  • 软件工程 课后题 选择 查缺补漏
  • PyQt基础_011_对话框类控件QMessage
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel | 京东云技术团队
  • [LeetCode] 12. 整数转罗马数字
  • 深入了解Java Period类,对时间段的精确控制
  • 企业软件的分类有哪些|app小程序定制开发
  • 选择更好的Notes索引附件方式
  • Vue混淆与还原
  • R语言单因素方差分析+差异显著字母法标注+逐行详细解释
  • linux 消息队列apache-activemq服务的安装
  • 前端数据加密相关问题
  • Vue3中reactive和ref对比
  • 【尘缘送书第五期】Java程序员:学习与使用多线程
  • Linux C语言 34-库封装操作
  • JavaWeb-Tomcat
  • k8s之Pod常用命令详解、镜像拉取策略(imagePullPolicy)
  • Spark低版本适配Celeborn
  • idea报错:Error:java: 不允许在使用 -release 时从系统模块 java.xml 导出程序包?
  • Vector Quantized Diffusion Model for Text-to-Image Synthesis
  • solidity实现ERC1155多代币标准
  • 10、外观模式(Facade Pattern,不常用)
  • <软考>软件设计师-3程序设计语言基础(总结)