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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 21:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 21:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 21:26:02       82 阅读
  4. Python语言-面向对象

    2023-12-11 21:26:02       91 阅读

热门阅读

  1. Holynix

    Holynix

    2023-12-11 21:26:02      49 阅读
  2. PKCS#11及其在车联网中的应用

    2023-12-11 21:26:02       57 阅读
  3. 用keepalived做mysql高可用

    2023-12-11 21:26:02       58 阅读
  4. 使用can_require函数的测试程序

    2023-12-11 21:26:02       49 阅读
  5. 算法基础九

    2023-12-11 21:26:02       32 阅读
  6. 算法工程师-机器学习面试题总结(6)

    2023-12-11 21:26:02       54 阅读
  7. 自然场景图像中的文本检测综述

    2023-12-11 21:26:02       43 阅读
  8. 最新搭建彩虹易支付平台-银联进件

    2023-12-11 21:26:02       54 阅读