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

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


http://www.kler.cn/news/161323.html

相关文章:

  • 处理器中的TrustZone之安全状态
  • Git常用命令#merge分支合并
  • java--泛型
  • C++刷题 -- 链表
  • MacBook续命,XCode硬盘占用问题
  • React创建项目
  • LESS的叶绿素荧光模拟实现——任意波段荧光模拟
  • Uber Go 语言编码规范
  • Android Studio中Flutter项目找不到Android真机设备解决方法
  • class059 建图、链式前向星、拓扑排序【算法】
  • 如何在Spring Boot中集成RabbitMQ
  • C++ vector基本操作
  • dockers安装rabbitmq
  • MySQL 学习笔记(刷题篇)
  • 基于JNI实现调用C++ SDK
  • 深圳锐杰金融:用金融力量守护社区健康
  • workbench导入sql脚本文件
  • (C#)使用sharpcompress压缩解压文件(.rar,.zip,tar.bz2,.7z,.tar.gz)
  • Docker、Kubernetes、OCI、CRI-O、containerd、runc 之间的关系以及它们是如何一起工作的?
  • 5.9 Windows驱动开发:内核InlineHook挂钩技术
  • 移除静态库中多余的符号
  • Docker使用笔记
  • 详细解读python里的列表
  • 排序:直接选择排序
  • Elasticsearch:评估 RAG - 指标之旅
  • WebGL笔记:矩阵缩放的数学原理和实现
  • 【Flink on k8s】- 0 - Flink kubernetes operator 快速入门与实战
  • 【SQL开发实战技巧】系列(四十八):Oracle12C常用新特性☞多分区操作和管理
  • dtaidistance笔记:dtw_ndim (高维时间序列之间的DTW)
  • 嵌入式工程师校招经验与学习路线总结