本程序应用场景:有多个工作簿,每个工作簿里面有多个表格,
并且第一个表格的格式相同,但表格名称不一定相同,
从每个工作簿中第一个表格中提取一个网址里面的id信息,并将id相同的去重复,
最后将整理的数据存放到新的表格中
下面图片中左侧为我们的原始数据,可以看到有很多个工作簿(实际可能更多)右侧为工作簿中第一个表格的数据,这里我们需要提取网址中的id信息,并去重保存。
最终效果展示,可以看到没有重复内容。
# -*- coding:utf-8 -*-
'''
本程序应用场景:有多个工作簿,每个工作簿里面有多个表格,
并且第一个表格的格式相同,但表格名称不一定相同,
从每个工作簿中第一个表格中提取一个网址里面的id信息,并将id相同的去重复,
最后将整理的数据存放到新的表格中
'''
import re
from openpyxl import load_workbook as wk
from openpyxl import Workbook as nwk
import os
file=r'E:\python\EXCEL多表数据提取\数据'
def file_name(file_dir):
for root,dirs,files in os.walk(file_dir):
return files
#文件列表
list_wenjian=file_name(file)
#踢出python程序文件名
list_wenjian.remove('quchong.py')
print(list_wenjian)
#数据列表
value=[]
#存放id的数组,用于判断id是否重复
data=['wenjian']
#逐个读取工作簿数据处理并去除重复后存到临时数组中
for i in range(len(list_wenjian)):
file=list_wenjian[i]
wb=wk(file)
#获取工作簿表格集合
sheet_names=wb.get_sheet_names()
#获取第一个表格
ws=wb.get_sheet_by_name(sheet_names[0])
lenth=len(list(ws.rows))
for i in range(2,lenth+1):
#将数据中id=后面的数字截取出来
ss=str(ws.cell(row=i,column=1).value)
a=re.findall(r'id=(\d*)',ss)
#去重复
if a in data or a==[]:
pass
else:
data.append(a)
print(a[0])
value.append({"id":a[0],"url":ss})
new_wb=nwk()
sheet=new_wb.active
sheet.title="同行数据"
for i in range(len(value)):
sheet.cell(row=i+1,column=1).value=value[i]['id']
sheet.cell(row=i+1,column=2).value=value[i]['url']
print("正在清洗数据。。。请耐心等待!")
#将数组内容清空、释放内存
value=[]
new_wb.save("shuju.xlsx")
print("《《《《《《《《《《《数据清洗完毕》》》》》》》》》》》》")
领取专属 10元无门槛券
私享最新 技术干货