赵乾舟 发表于 2022-1-26 13:51:38

字符串切片案例--根据身份证号码判断性别


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

页: [1]
查看完整版本: 字符串切片案例--根据身份证号码判断性别