|
处理前:
处理后:
需求:根据职员信息列,提取括号内的部门信息。
思路:循环每一行,用find函数提取括号开始和结束的位置,利用切片拿到部门。定位的开头数字是括号的位置,所以部门是从开头数字+1开始计算。
知识点:我最后增加一行没有括号的信息,可以看到也拿到了信息,但是不对,因为find函数分别返回了-1,所以提出的时候按照【0:-1】提取,所以这样显示了。
书中代码:
- import xlrd #导入读取xls文件的库。
- from xlutils.copy import copy #导入工作簿复制函数。
- wb=xlrd.open_workbook('Chapter-4-9-1.xls') #读取工作簿。
- ws=wb.sheet_by_name('信息表') #读取工作表。
- nwb=copy(wb) #复制工作簿产生一个副本。
- nws=nwb.get_sheet('信息表') #读取副本中的工作表。
- row_num=0 #初始化row_num变量为0。
- while True: #条件为True,表示会一直循环,在循环中做终止循环处理。
- row_num +=1 #对row_num变量累加1。
- if row_num > ws.nrows-1: #当row_num变量大于已使用单元格区域行数时。
- break #则终止循环。
- info=ws.cell_value(row_num, 0) #获取A列单元格的值。
- strat=info.find('(')+1 #搜索'('的位置,应该从'('之后,所以最后要加1。
- end=info.find(')') #搜索')'的位置。
- dept=info[strat:end] #截取A列单元格'('和')'之间的部门信息。
- nws.write(row_num,1,dept) #将截取到的部门信息写入B列单元格。
- nwb.save('Chapter-4-9-1.xls') #保存工作簿。
复制代码 我写的for循环代码:
- import xlrd
- from xlutils.copy import copy
- wb = xlrd.open_workbook('Chapter-4-9-1.xls')
- ws = wb.sheet_by_index(0)
- nwb = copy(wb)
- nws = nwb.get_sheet('信息表')
- for row in range(1,ws.nrows):
- info = ws.cell_value(row,0)
- start_num = info.find('(')
- end_num = info.find(')')
- value = info[start_num+1:end_num]
- nws.write(row,1,value)
- nwb.save('2.xls')
复制代码
|
|