python取第二列_python办公比对微信群学生到家报到

如何通过python比对两份学生名单,找出没有报道的学生呢?实例告诉大家。

今天是女朋友的班里最后一场期末考试,孩子们回家后家长就在群里发报到;然后怎么从中去找出哪些是没有报道的孩子,好去提醒家长报到,了解孩子是否到家呢; 

下面是微信群报答的接龙文字,和学生名单。

923186114cd0b9b5bce6dd2d2837fb22.png
微信报道
ee0290d8b75d10c48da20a6328a21d41.png
学生名单

        此处展示的学生名单为非真实存在姓名                        

下面就来演示一下通过python迅速比对;这里用到的是python的openpyxl包来处理excel;

步骤一:保存这些报道的文字到11.txt,

步骤二:安装openpyxl的包:

pip install openpyxl

步骤三:写简单的python代码,导入包,打开txt, 遍历所有行,把所有文字变为一个字符串对象a;用openpyxl 打开excel ,打开表格,取第二列的所有名字sheet.cell(row=i,column=2).value; 判断是否是包含关系,如果是打印已经报道的学生,如果不是则把名字放到集合strs, 最后打印strs。每一个名字都去和上面的字符串里面去比对,这里要把姓名为三个字的变成两个字的名,因为有的家长只说两个字;

#导入openpyxl
import openpyxl

# 获得报道的所有文字,变成一个字符串,声明字符串对象a, 列表stds
a=''
stds=[]

with open('11.txt','r',encoding='utf-8') as f:
 lines=f.readlines()
 # print(lines)
 for line in lines:
  a=a+line
 #  a.append(line)
# print(a)

#打开excel,打开工作表,遍历第二列,并比对名字在不在报道的文字里面
wb= openpyxl.load_workbook('54.xlsx')
sheet=wb.active
for i in range(2,sheet.max_row+1): #从第二行有名字开始
 # 如果名字长三个字则 取后面的两个字,为std对象
 if len(sheet.cell(row=i,column=2).value) >=3:

  std=sheet.cell(row=i,column=2).value[1:3]
 else:
  std=sheet.cell(row=i,column=2).value
 if std in a:
  print('已经报道')
 else:
  print(sheet.cell(row=i,column=2).value)
  stds.append(sheet.cell(row=i,column=2).value)
print(stds)
#打印还没有到家的孩子名单

下面是打印的结果:

已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
刘*菲
已经报道
已经报道
已经报道
左*乐
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
段*豪
已经报道
谢*鹏
唐*诗
已经报道
已经报道
已经报道
孙晓能
已经报道
已经报道
已经报道
陈*炜
蓝*翔
已经报道
已经报道
已经报道
已经报道
王*勇
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
已经报道
何*俊
已经报道
已经报道
已经报道
[ '刘*菲', '左*乐', '段*豪', '谢*鹏', '唐*诗', '孙*能', '陈*炜', '蓝*翔', '王*勇', '何*俊']

Process finished with exit code 0

今天就写到这里,后面如果在生活和工作有实际例子,都会写出来分享;谢谢大家

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值