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

[《从excel到python》笔记案例] 字符串切片案例--根据身份证号码判断性别

[复制链接]

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
770449
发表于 2022-1-26 13:51:38 | 显示全部楼层 |阅读模式
2022-01-26_134845.png 2022-01-26_134856.png
处理前                                           处理后
需求,对每个成员进行性别判断,并写入C列。
思路:根据身份证号第17位判断,用切片方式拿到数字,然后除以2取余数,如果余数为0,就是女,否则男。
以下是书中所示代码,其中利用while循环
  1. import xlrd,xlwt #导入所需库。
  2. wb=xlrd.open_workbook('Chapter-4-3-1.xls') #读取工作簿。
  3. ws=wb.sheet_by_name('员工信息表') #读取工作表。
  4. nwb=xlwt.Workbook('utf-8') #新建工作簿。
  5. nws=nwb.add_sheet('员工信息表-1') #新建工作表。
  6. nws.write(0,0,'姓名') #在表头写入'姓名'。
  7. nws.write(0,1,'身份证号') #在表头写入'身份证号'。
  8. nws.write(0,2,'性别') #在表头写入'性别'。
  9. row_num=0 #初始化row_num变量为0。
  10. while row_num<ws.nrows-1: #当row_num小于'员工信息表'已用行数时,开始循环。
  11.     row_num +=1 #累加row_num变量。
  12.     card=ws.cell_value(row_num,1) #获取单元格的身份证号信息。
  13.     sex_num=int(card[14:17][-1]) #截取判断性别的数字。
  14.     sex='男' if sex_num % 2 == 1 else '女' #根据数字判断性别。
  15.     name=ws.cell_value(row_num,0) #获取姓名。
  16.     nws.write(row_num,0,name) #将姓名写入新工作表中的A列单元格。
  17.     nws.write(row_num,1,card) #将身份证号写入新工作表中的B列单元格。
  18.     nws.write(row_num,2,sex) #将性别写入新工作表中的C列单元格。
  19. nwb.save('Chapter-4-3-2.xls') #保存新建的工作簿。
复制代码
下面代码是我用for循环写的,图中效果就是用如下代码运行的效果
  1. import xlrd,xlwt
  2. wb = xlrd.open_workbook('Chapter-4-3-1.xls')
  3. ws = wb.sheet_by_index(0)
  4. nwb = xlwt.Workbook('utf-8')
  5. nws = nwb.add_sheet('sheet1')
  6. nws.write(0,0,'name')
  7. nws.write(0,1,'ID')
  8. nws.write(0,2,'sex')
  9. for row in range(1,ws.nrows):
  10.     nws.write(row,0,ws.cell_value(row,0))
  11.     nws.write(row,1,ws.cell_value(row,1))
  12.     id = ws.cell_value(row,1)
  13.     id_num = id[16]
  14.     if int(id_num) %2 ==0:
  15.         nws.write(row,2,'woman')
  16.     else:
  17.         nws.write(row, 2, 'man')
  18. nwb.save('new.xls')
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 00:18 , Processed in 0.069242 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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