请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 1692|回复: 0

[《从excel到python》笔记案例] 字符串搜索案例--提取指定位置信息

[复制链接]

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750844
发表于 2022-1-26 14:40:43 | 显示全部楼层 |阅读模式
处理前: 2022-01-26_143620.png     处理后: 2022-01-26_143632.png
需求:根据职员信息列,提取括号内的部门信息。
思路:循环每一行,用find函数提取括号开始和结束的位置,利用切片拿到部门。定位的开头数字是括号的位置,所以部门是从开头数字+1开始计算。

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





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号-3 )

GMT+8, 2024-3-29 23:07 , Processed in 0.093673 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表