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

news2024/11/25 5:37:58

利用 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()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二十一章网络通信总结博客

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信,必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称,是一种网络协议。Internet 网络采用的协议是TCP/IP协议,其全称是Transmissio…

AttributeError: module ‘importlib_resources‘ has no attribute ‘path‘ 解决方案

问题描述 with importlib_resources.path("xx", fname) as p: AttributeError: module importlib_resources has no attribute path 博主使用的是python3.9,看importlib_resources在importlib-resources PyPI中的介绍,开始猜测问题出在pyth…

【重磅来袭!!!工程师必备初始化建工程软件】

重磅来袭!!!工程师必备初始化软件 每个工程建立前,你是否为了要建立各种文件夹而烦恼?你是否为了因为工程每次文件夹不统一找不到文件而烦扰?来咯,Project Initial V1_0软件只需输入工程名称&am…

12-07 周四 Pytorch 使用Visdom 进行可视化

简介 在完成了龙良曲的Pytroch视频课程之后,楼主对于pytroch有了进一步的理解,比如,比之前更加深刻的了解了BP神经网络的反向传播算法,梯度、损失、优化器这些名词更加熟悉。这个博客简要介绍一下在使用Pytorch进行数据可视化的一…

VBA技术资料MF93:将多个Excel表插入PowerPoint不同位置

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

【JavaScript】JS——Map数据类型

【JavaScript】JS——Map数据类型 什么是Map?特性Map与Object的比较 map的创建map的属性map相关方法map的遍历 什么是Map? 存储键值对的对象。 能够记住键的原始插入顺序任何值(对象或原始值)都可以作为键或值。 特性 Map中的一个键只能出现一次&am…

解决react启动服务时source-map-loader插件报错找不到源文件“index.ts“的源映射文件

webpack 5: Failed to parse source map from “**********” 如下图所示: The source map files links to the src/ - folder that is not distributed. // node_modules/mswjs/interceptors/lib/interceptors/utils/uuid.js.map {"version":3,"file":&…

家政预约小程序带商城,图文详解

家政预约小程序开发,在线选择服务分类,选择上门时间,提交订单,在线支付。 商城模块:商品分类,在线下单支付。 个人中心:订单管理(家政订单,搬家订单,商品订…

虾皮关键词工具:优化您的Shopee商品曝光度和搜索排名

在Shopee平台上,关键词工具对于提高商品曝光度和搜索排名非常重要。本文将向您介绍一些值得推荐的关键词工具,这些工具可以帮助您找到合适的关键词以优化您的商品列表,并提高搜索排名和曝光度。 先给大家推荐一款shopee知虾数据运营工具知虾免…

Course2-Week3-使用机器学习的建议

Course2-Week3-使用机器学习的建议 文章目录 Course2-Week3-使用机器学习的建议1. 拆分原始训练集1.1 如何改进模型1.2 二拆分:训练集、测试集1.3 三拆分:训练集、验证集、测试集 2. 避免高偏差和高方差2.1 使用训练误差和验证误差进行分析2.2 选择合适的…

图的广度优先搜索(数据结构实训)

题目: 图的广度优先搜索 描述: 图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接点的邻接点。如此进行下去,直到所有的结点都…

idea利用SpringMVC框架整合ThymeLeaf

简洁一些:两个重要文件 1.controller指定html文件:我们访问http://localhost:8080/test package com.example.appledemo.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import o…

一分钟教你弄懂KMP算法

问题背景 KMP算法主要应用与字符串的比较,有一个主串,有一个子串,我们要通过一种方式来查看子串是否为主串的一部分。我们通常的想法是:主串和子串左对齐,一个字符一个字符进行比较,如果其中有个字符不匹配…

北京市经信局局长姜广智带队调研三六零 强调大模型应与行业结合

12月6日,北京市经济和信息化局局长姜广智、副局长王磊带队走访调研三六零集团,就共促城市级数字安全基础设施项目落地,打造引领行业发展标杆项目,推动大模型落地应用赋能产业、行业发展等话题进行交流。360集团创始人周鸿祎接待来…

h5和小程序通信

相信大部分人可能都会遇到要在微信小程序里面嵌入h5,这个时候h5和小程序之间的通信就成了不可避免的一环,不用紧张,其实很简单。 看一下微信小程序官方文档怎么说 首先我们按照文档上的指示,在需要向小程序传递参数的页面引入 jw…

从霸总短剧的热播,看出海品牌如何巧妙利用短剧进行全球推广

近期,中国式“霸总”短剧在国外走红,看着这熟悉的剧情模式和作品结构,让一众国内网友震惊的同时,也为中国品牌的全球推广带来了新的思路和灵感。本文Nox聚星将和大家从霸总短剧在海外的热播出发,探讨出海品牌如何巧妙利…

【动态规划】02斐波那契数列模型_三步问题(easy)

题目链接:leetcode三步问题 目录 题目解析: 算法原理: 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码: 题目解析: 题目让我们求小孩到达n阶台阶的时候,可以有多少上楼梯方式; 由题可得&a…

理解IO复用的三种模式——select、poll、epoll

文章目录 一、Select1、select简介2、select实现原理3、select编程4、select常见问题 二、poll1、poll简介2、poll实现原理3、poll编程4、poll常见问题 三、epoll1、epoll简介2、epoll实现原理3、epoll编程4、epoll常见问题 Linux IO模型是指Linux操作系统中用于实现输入输出的…

MySQL 包含查询特殊符号数据

当你模糊查询包含特殊符号的数据时,如果不加上特殊处理,查询结果是错误的。 如果你查的数据包含如上字符或者其他特殊字符,需要加上\转义字符。 如下示例: SELECT * FROM t_bc_user t where t.name LIKE %\_%

四、分代垃圾回收机制及垃圾回收算法

学习垃圾回收的意义 Java 与 C等语言最大的技术区别:自动化的垃圾回收机制(GC) 为什么要了解 GC 和内存分配策略 1、面试需要 2、GC 对应用的性能是有影响的; 3、写代码有好处 栈:栈中的生命周期是跟随线程&…