赵乾舟 发表于 2022-1-26 14:40:43

字符串搜索案例--提取指定位置信息

处理前:    处理后:
需求:根据职员信息列,提取括号内的部门信息。
思路:循环每一行,用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 #截取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
    nws.write(row,1,value)
nwb.save('2.xls')




页: [1]
查看完整版本: 字符串搜索案例--提取指定位置信息