Python结合正则表达式从Excel提取数据并生成新表
本文介绍如何利用Python的openpyxl库与正则表达式,解决Excel中非规律性数据的提取难题。通过定义日期和邮箱的正则模式,遍历指定单元格范围提取关键信息,并将结果写入新建的工作表中,最终实现自动化数据整理与保存,适用于需要统计特定时间段项目用时的场景。
近期开始学习Python,恰逢实习工作中面临Excel数据处理的需求,因此决定尝试使用Python来解决实际问题,以此作为练手项目。
具体需求是从Excel文件中提取日期、电子邮件地址以及时间信息,进而统计特定人员在特定项目于规定时间段内的耗时,并最终生成数据透视表。
首要任务是数据提取。虽然Excel内置了“文本分列”功能,但该功能对格式不规律的列数据处理效果不佳,无法准确分割出所需数据,因此决定采用Python进行处理。
实现该功能主要依赖两个库:一个用于Excel文件的读写操作,另一个是用于模式匹配的正则表达式库。
鉴于xlwt和xlrd库仅支持处理03版及以前的Excel文件,本方案选用openpyxl库以兼容现代Excel格式。
以下是自行编写的代码,实现了日期和电子邮件地址的提取功能,实际运行效果良好,仅供参考,欢迎交流探讨与优化建议。
import openpyxl
import re
def Exceldivide(file_dir):
wb=openpyxl.load_workbook(file_dir) #打开原有的excel表
sheet=wb.get_sheet_by_name('Sheet1')
tuple(sheet['A1':'C3'])
wb.create_sheet('Sheet2') #新建一个表
sheet2=wb.get_sheet_by_name('Sheet2')
tuple(sheet2['A1':'C3'])
L1=re.compile(r'\d\d/\d\d/\d\d\d\d') #日期格式
L2=re.compile(r'[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.com') #邮件格式
l1=[]
l2=[]
for rows in sheet['A1':'C3']: #提取日期和邮件数据
for cell in rows:
A=L1.search(cell.value)
a=A.group()
B=L2.search(cell.value)
b=B.group()
for rows in sheet2['A1':'A9']: #把日期数据写入新表
for cell in rows:
cell.value=a
print(cell.coordinate,cell.value)
for rows in sheet2['B1':'B9']: #把邮件数据写入新表
for cell in rows:
cell.value=b
print(cell.coordinate,cell.value)
return wb
g=Exceldivide('C:\\Users\\Desktop\\111_copy.xlsx')
g.save('C:\\Users\\Desktop\\111_copy.xlsx') #保存
以上即为利用Python从Excel提取特定数据并写入新表的完整方法,希望能为读者提供参考,同时也欢迎大家提出改进意见。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













