Python3.5 处理excel_1(删除多余行)

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的选择加个循环就行了

望有所帮助,望采纳!!

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值