pip install xlrd
pip install xlwt
Pywin32 模块中包含win32com模块
pip install pypiwin32
1.用 Python 删除中excel表格中某列重复的项,并将整行删去。
No | 姓名 | 分数 | 特长 | 爱好 | 评级 |
1 | 张三 | 99 | 足球 | 体育 | 优秀 |
2 | 李四 | 32 | 足球 | 体育 | 不合格 |
3 | 王五 | 96 | 唱歌 | 音乐 | 优秀 |
假设有很行,我们仅仅想保留不同的评级信息。
即经过处理,上述表格将简化为:
No | 姓名 | 分数 | 特长 | 爱好 | 评级 |
1 | 张三 | 99 | 足球 | 体育 | 优秀 |
2 | 李四 | 32 | 足球 | 体育 | 不合格 |
具体程序如下:
import xlrd
import xlwt
file = "first.xlsx"
# data = xlrd.open_workbook(path + '/' +file_r)
data = xlrd.open_workbook(file)
# nums = len(data.sheets())
sheet1 = data.sheets()[0]
#获取行数
nrows = sheet1.nrows
#获取列数
ncols = sheet1.ncols
#定义空list
rows_get = []
valueList = []
#循环行
for i in range(1,nrows):
A0 = sheet1.cell(i,6).value
A0 = A0.strip()
print(A0)
#不从第一行开始判断,因为第一行的姓名行我们需要保留,后面不需要,这里选3(根据具体情况而定)吧
if A0 not in valueList:
#加入row_get
rows_get.append(i)
valueList.append(A0)
else:
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('new.xls')
2. 用正则项模糊匹配某列中的内容,并将本行内容过滤掉,生成一个新的excel表。
import re import xlrd import xlwt match_str = r'QoS Data, SN=\d{3}, FN=\d, Flags=*' #比如匹配‘QoS Data, SN=160, FN=0, Flags=.p...FP’ file = "new.xls" data = xlrd.open_workbook(file) sheet1 = data.sheets()[0] #获取行数 nrows = sheet1.nrows #获取列数 ncols = sheet1.ncols rows_delet = [] for i in range(1,nrows): A0 = sheet1.cell(i, 6).value A0 = A0.strip() #不从第一行开始判断,因为第一行的姓名行我们需要保留,后面不需要,这里选3(根据具体情况而定)吧 if re.match(match_str, A0): #加入row_get rows_delet.append(i) else: continue rows_olds = list(range(nrows)) rows_news = list(set(rows_olds).difference(set(rows_delet))) #新建工作簿 workbook = xlwt.Workbook('ascii') #新建sheet sheet_w = workbook.add_sheet('write') #定义初始变量 wx = 0 #循环rows_get for x in rows_news: 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('new1.xls')