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

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

表格数据样例如下图

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

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

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

Python 源码如下

#-*- coding: utf-8 -*-
 
import openpyxl
 
def compare(path):
    # openpyxl 加载指定表格(操作时,表格需要为关闭状态)
    wb = openpyxl.load_workbook(path)
    # 指定需要操作的 表格页面
    ws = wb['Sheet']
 
    # A列数据
    col_a = []
    # B列数据
    col_b = []
 
    col_c = []
    col_d = []
 
    # 没有对A,B列中空数据进行特殊处理,如有需要,自行修改
    # 将A列数据拼接为list
    for col in list(ws.columns)[0]:
        col_a.append(str(col.value))
 
    # 将B列数据拼接为list
    for 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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225955.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Chatgpt如何完成论文写作及python机器学习和深度学习领域的运用

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

初学vue3与ts:vue3选项式api获取当前路由地址

vue2的获取方法 this.$route.pathvue3选项式api获取方法 import { useRouter } from vue-router; const router useRouter(); console.log(router) console.log(router.currentRoute.value.path)

集合的大家族

常见面试题:ArrayList和LinkedList的区别 ArrayList是基于动态数组实现的,而LinkedList是基于链表实现的由于第1点因此ArrayList在查找和修改元素操作时效率更高,而在增删元素时LinkedList则效率更高,因为ArrayList需要移动数据

应用在大功率驱动器中的IGBT晶圆

功率器件驱动器是电力电子系统的低压信号控制电路和高压主电路之间的接口,是功率器件应用的关键技术与难点之一。功率器件中的晶体管和晶闸管在应用中需要驱动器的驱动信号才可运行,功率器件驱动器的通常作用是电气隔离、信号传输与放大及功率器件的保护…

二叉树题目:翻转二叉树以匹配前序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:翻转二叉树以匹配前序遍历 出处:971. 翻转二叉树以匹配前序遍历 难度 5 级 题目描述 要求 给定一个二叉树的根结点 root \texttt{roo…

【STM32单片机】简易电子琴设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用数码管模块、矩阵按键、无源蜂鸣器等。 主要功能: 系统运行后,蜂鸣器播放一首音乐,进入电子琴模式,…

“大病来前,脚先知”!若是你的脚部有6个表现,或是大病信号

脚是人的“根”,一棵大树是否繁盛取决于根。当根部枯萎时,树木就会率先枯竭,而脚就是人体老化的征兆。因此,有一句古老的谚语,“大病来临之前脚先知”,这意味着可以通过观察脚的运动表现来预测大病的迹象。…

从零开发短视频电商 JMH压测真实示例DEMO

文章目录 原理依赖基础示例结果main 关键注解示例BenchmarkWarmupMeasurementBenchmarkModeOutputTimeUnitForkThreadsStateSetup 和 TearDownParam 问题DeadCode常量折叠Loops JMH 测试的对象可以是任一方法,颗粒度更小,例如本地方法,Rest A…

【数据结构】手撕排序

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、排序的概念及其运用1.1 排序的概念1.2 常见的算法排序 二、 冒泡排序三、直接插入排…

微信公众号的服务器验证方法

服务器上的操作: 将下面的wx.py文件放在服务器上,运行python3 wx.py 80 # -*- coding: utf-8 -*- # filename: main.py import web import handle import hashlibclass WeChatHandler(object):def GET(self):data web.input()if len(data) 0:return &…

回溯算法:递增子序列 全排列 全排列II

491.递增子序列 思路: 分析题目: 输入一个序列,输出至少有两个元素的递增子序列。所谓序列,就是按照次序排好的行列,因此本题不可以把输入数组重新排序,否则就会改变序列的顺序。因此,不能使用…

C# WPF上位机开发(抽奖软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 每到年末或者是尾牙的时候,很多公司都会办一些年终的清楚活动,感谢员工过去一年辛苦的付出。这个时候,作为年会…

深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图

大家好,我是微学AI,今天给大家介绍一下深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图。本文我将介绍自动驾驶技术及其应用场景,并重点阐述了基于计算机视觉技术下的自动驾驶。自动驾驶技术是一种利用人工智能和…

Dockerfile 指令的最佳实践

这些建议旨在帮助您创建一个高效且可维护的Dockerfile。 一、FROM 尽可能使用当前的官方镜像作为镜像的基础。Docker推荐Alpine镜像,因为它受到严格控制,体积小(目前不到6 MB),同时仍然是一个完整的Linux发行版。 FR…

【技术分享】利用双网口透传网关实现三菱FX3U PLC远程程序上下载监控

准备工作 一台可联网操作的电脑一台双网口的远程透传网关及博达远程透传配置工具网线两条,用于实现网络连接及连接PLC一台三菱 FX3U PLC及其编程软件一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡,WIFI联网则将WIFI天线插入USB口) …

如何选择靠谱的软件测试外包公司?CMA、CNAS软件测试报告获取

作为信息科技产业的代表之一,软件公司受到了越来越多的关注,它们的发展为我国的科技创新提供了强大的战略支撑。软件测试作为提升软件产品质量的后盾,日益成为一个专业化、标准化和规范化的行业,软件测试外包公司就是这种背景下成…

安装Centos7

作者:余小小 下载VMware15 参考:http://t.csdnimg.cn/saS9S 下载镜像 这里使用网易镜像库下载 网易开源镜像站http://mirrors.163.com/ 网易Centos下载http://mirrors.163.com/centos/7.7.1908/isos/x86_64/ 安装Centos系统(基础设施&…

云安全技术包括哪些?

云安全技术是随着云计算技术的发展而衍生出来的一种安全技术,它利用云计算的分布式处理和数据存储能力,实现对海量数据的快速处理和存储,同时采用机器学习和人工智能技术对数据进行分析和挖掘,以便更好地发现和防御安全威胁。云安…

Java常见算法和lambda

查找算法 public class day11 {public static void main(String[] args) {//基本查找 / 顺序差宅//核心://从0索引开始挨个往后查找//需求:定义一个方法利用基本查找 查询某个元素是否存在//数据如下:{131,127,147,81,103,23,7,79}int[] arr{131,127,147,81,103,23,7,79};int…

如何高效管理多个微信?

看倒这个标题,你是否有以下烦恼: 1.微信账号太多,管理过于麻烦 2.微信号多,需要很多员工来管理,人工费用多 3.多个微信打开后会造成微信登陆界面过多,切换操作十分不方便 4.当微信多的时候,…