诉求:一个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文件中的描述