发布时间:2019-08-06 13:55:38编辑:auto阅读(1170)
Python3.5 处理excel_1(删除多余行)
望共同进步
转载请注明地址 http://mp.blog.csdn.net/postedit/79513650
处理excel这里需要两步:
1.读取excel: http://blog.csdn.net/weixin_39701039/article/details/79492672 ;
2.写入excel: http://mp.blog.csdn.net/postedit/79504931
这里主要讲怎样删除多余行
直接上代码了,代码中有思路及代码的部分注释
#coding:utf-8 #python3.5.1 import xlrd import xlwt import re #正则模块 path = r'G:\任务20180305\TEST' file_r = 'del.xlsx' data = xlrd.open_workbook(path + '/' + file_r) nums = len(data.sheets()) sheet1 = data.sheets()[0] #获取行数 nrows = sheet1.nrows #获取列数 ncols = sheet1.ncols #如图1,我们知道想要删除小面的空行、续表行、以及姓名行(第一行的姓名不能删除) #思路:1.我们去除不需要行的行数(即哪一行),也就是获取我们所需要行在第几行的一个列表;2.循环这个列表,获取我们所需要的行数据,写入对应的excel中 #1 #定义空list rows_get = [] #循环行 for i in range(nrows): #获取第一列的各行数据 A0 = sheet1.cell(i,0).value #去除首位空格 A0 = A0.strip() #不从第一行开始判断,因为第一行的姓名行我们需要保留,后面不需要,这里选3(根据具体情况而定)吧 if i <3: #加入row_get rows_get.append(i) else: #开始正则部分 #规定正则格式,这里是匹配中文字符(因为表中含有continued table1行) p = r'[\u4e00-\u9fa5]' #编译 pattern = re.compile(p) #在A0中匹配 try: #判断A0中是否存在中文字符(这里把英文,空行剔除了) ch_first = re.findall(pattern, A0)[0] #因为空list不能([0])选择第一个元素,会显示错误(IndexError: list index out of range) #剔除续表行 if A0[0:2] == '续表': pass #剔除姓名行 elif A0[0:2] == '姓名': pass else: rows_get.append(i) except: continue #已经得到我们所需数据的行标数 print(rows_get) #新建工作簿 workbook = xlwt.Workbook('ascii') #新建sheet sheet_w = workbook.add_sheet('write') #定义初始变量 wx = 0 #循环rows_get for x in rows_get: for y in range(ncols): sheet_w.write(wx,y,sheet1.cell(x,y).value) #wx,y 是写入sheet的行列标,sheet1.cell(x,y).value是原表我们需要的数据 wx = wx + 1 #行数加一,使得写入的sheet 行连续 #保存工作簿 workbook.save(path + '/' + 'new.xls') #如图2
图1:
图2:
这里一个工作表会处理了,那多个表只是在前sheet的选择加个循环就行了
望有所帮助,望采纳!!
上一篇: 为初学者准备的15本免费Python电子
下一篇: python3-001-多线程简单聊天室
47495
45796
36794
34326
28969
25599
24444
19612
19112
17634
5467°
6049°
5571°
5639°
6574°
5377°
5379°
5886°
5856°
7172°