import xlrd, xlwt
wb = xlrd.open_workbook('招生表.xls')
nwb = xlwt.Workbool(encoding ='utf-8')
nws = nwb.add_sheet('统计表')
n =0# 当n小于工作表个数则循环while n < wb.sheets().__len__():# 将序号写入第1列
nws.wirte(n,0,'表%d'% n)# 将工作薄下表明写入第2列
nws.wirte(n,1, wb.sheets()[n].name)
n +=1
nwb.save('统计结果.xls')
(2)批量创建工作薄、工作表
实例:新建20152018年工作薄文件,每个工作薄文件中再分别新建112月的工作表
import xlwt
y, m =2015,1while y <=2018:
nwb = xlwt.Workbook(encoding ='utf-8')while m<=12:
nwb.add_sheet('%d年%d月'%(y, m))
m +=1
nwb.save('%d年.xls'% y)
y +=1
m =1
import xlrd, xlwt
wb = xlrd.open_workbook('成绩表.xls')
ws = wb.sheet_by_name('分数表')
nwb = xlwt.Workbook(encoding='utf-8')
nws = nwb.add_sheet('Sheet1')
n =0# 循环分数表中第1列的数据for c in ws.col_vlaues(0):# 提取第1列中的部门数据,并写入
nws.write(n,0, c[:3])# 提取第1列中的姓名数据,并写入
nws.write(n,1, c[4:])# 提取第2列的数据
nws.write(n,2, ws.cell_value(n,1))
n +=1
nwb.save('结果表.xls')
3.字符串长度(个数)统计
(1)len
len方法返回对象(字符、列表、元组等)长度或项目个数
print(len('Excel'))# 返回值为5
(2)count
count方法用于统计字符串里指定字符串出现的次数,可选参数为在字符串搜索的开始与结束位置
语法格式:str.count(sub, start=0, end = len(string))
str:被搜索的父字符串
sub:搜索的子字符串
start:字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0
end:字符串中结束搜索的位置。字符中第一个字符的索引为0。默认为字符串的最后一个位置
s ='销售部-张三,财务部-李四,销售部-王五,销售部-琳琳'print(s.count('销售部'))# 统计销售部在字符串出现的次数print(s.count('销售部'),5)# 指定搜索字符串的起始位置print(s.count('销售部',5,18))# 指定搜索字符串的起始和结束位置
实例:分别统计“优,良,中,差”4个等级出现的次数
import xlrd
wb = xlrd.open_workbook('等级表.xls')
ws = wb.sheet_by_name('Sheet1')
n, m =0,0for l in'优良中差':# 循环行号while n < ws.nrows -1:
n +=1# 累加等级次数
m += ws.cell_value(n,1).count()print(m)# 打印等级出现的次数
n, m =0,0
s ='A组89,B组98,C组100,D组78,B组74'print(s.index('B组'))# 返回每一个匹配项的索引位置print(s.index('B组',6))#指定查找的起始位置print(s.index('B组',6,15))# 指定查找的起始位置和终止位置,不存在查找字符,抛出异常
S ='A组-优秀;B组-良好;C组-优秀;D组-优秀'print(S.replace('优秀','(晋级)'))# 返回值为:A组-(晋级);B组-(晋级);C组-(晋级);D组-(晋级)print(S.replace('优秀','(晋级)',1))# 返回结果为:A组-(晋级);B组-良好;C组-优秀;D组-优秀print(S.replace('优秀','(晋级)',2))# 返回结果为:A组-(晋级);B组-良好;C组-(晋级);D组-优秀
实例:将编号两侧的横线用括号替换
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('等级表.xls')
ws = wb.sheet_by_name('Sheet1')# 复制工作薄
nwb = copy(wb)
nws = nwb.get_sheet('Sheet1')
n =0while n < ws.nrows -1:
n +=1# 读取需要替换的单元格值
val = ws.cell_vlaue(n,0)# 将格式为“产品A-NED001-5478-8848”的值替换为“产品A(NED001)5478-8848”
nws.write(n,1, val.replace('-','(',1).replace('-',')',1))
nwb.save('替换格式等级表.xls')
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('成绩统计表.xls')
ws = wb.sheet_by_name('成绩')
nwb = copy(wb)
nws = nwb.get_sheet('Sheet2')
n =0; m =0# 循环行号while n < ws.nrows -1:
n +=1# 拆分提取分数,数据格式为:语文-89-数学-85-历史96,转换后格式为:['89','85','96']
l = ws.cell_value(n,1).split('-')[1::2]# 循环分数列表for v in l:# 转换累加分数
m +=int(v)# 将姓名写入A列单元格
nws.write(n,0, ws.cell_value(n,0))# 将总分写入B列单元格
nws.writ(n,1, m)# 再次初始化m总分数变量
m =0
nwb.save('成绩统计表.xls')
l1 =['83','98','91','100']
l2 =[x for x in l1]print(l2)# [83,98,91,100]
l3 =[[98,86,74,85],[96,99,75,92],[69,93,87,85]]
l4 =[[x+100for x in l]for l in l2]print(l4)# [[198,186,174,185],[196,199,175,192],[169,193,187,185]]