朋友找我,说他们领导让他写个脚本,给两个表,取表A和表B的userid进行对比,有重复的就把表A那一行userid相关数据给删除。然后他给了我一包中南海让我帮忙。我才不是看中这包烟才帮他忙的。。。。
上代码:
#!/usr/bin/env.python
#_*_coding:utf-8_*_
from openpyxl import workbook
from openpyxl import load_workbook
import time
def get_userid(file_path, col):
"""
:param file_path:传入文件路径
:return: 将指定列以列表类型返回
"""
exl1 = load_workbook(file_path)
sheet = exl1.get_active_sheet()
userid = []
for cell in sheet[col]:
if cell.value !='userid':
userid.append(cell.value)
return userid
def register():
'''
计算重复数据条数
:return: 返回遍历次数'''
list1 = get_userid(exl1_path, col='B')
list2 = get_userid(exl2_path, col='B')
count =0
for valuein list1:
if value in list2:
count +=1
return count
if __name__ =='__main__':
exl1_path ='文件路径'
exl2_path ='文件路径'
list1 = get_userid(exl1_path, col='B')
list2 = get_userid(exl2_path, col='B')
count = register()
exl = load_workbook(exl1_path)
wb = exl.active
if count !=0:
start_time = time.time()
# 第一层循环,遍历次数
for i in range(count):
# 第二层循环,获取值和索引
for index, value in enumerate(get_userid(exl1_path, col='B')):
#判断是否重复,如果重复就把对应行删除,跳出循环,将index置0(如果不跳出循环,列表的index会继续累加下去,这样会导致index和表格的数据索引对应不上,删错数据)
if value in list2:
wb.delete_rows(index +2, 1)
index =0
exl.save(exl1_path)
break
end_time = time.time()
use_time = time.time() - start_time
print('耗时{0:.2f}秒'.format(float(use_time)))
print('总共{}条数据'.format(len(list1)))
print('重复数据有{}条'.format(count))
else:
print("没有重复数据!")
望python大佬多多指教~~~
网友评论