使用python解决点儿小问题-对比csv每行是否完全相同(hashlib)

诉求:一个csv文件,N多行,检查是否有完全相同的行数据(一万多行,每行20多列)
使用excel的公式试了下没找到解决办法,尝试将数据做下hash,直接检查,会方便点;
使用python的hashlib库;
大部分是百度ai返回的,直接贴出来,留作后续使用

import csv
import hashlib


def hash_row(row):
    # 将每行的内容转为字符串并连接
    row_str = ','.join(str(value) for value in row)
    # 使用MD5算法生成哈希值
    return hashlib.md5(row_str.encode('utf-8')).hexdigest()


def read_csv_and_hash_rows(filename, encoding='utf-8'):
    with open(filename, 'r', encoding=encoding, newline='') as csvfile:
        reader = csv.reader(csvfile)
        for row in reader:
            # 读取每一行并计算其hash值
            hash_value = hash_row(row)
            print(hash_value)


# 调用执行
read_csv_and_hash_rows('Transaction.csv', encoding='utf-8')

刚开始没有做编码转换,报了这个错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xbf in position 2: illegal multibyte sequence,然后就加了encoding相关的内容,完美解决;
PS:如果需要用别的算法,把md5换成这些都可以sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), blake2s(),
sha3_224, sha3_256, sha3_384, sha3_512, shake_128, and shake_256,具体可查看hashlib.py文件中的描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值