如何通过python比对两份学生名单,找出没有报道的学生呢?实例告诉大家。
今天是女朋友的班里最后一场期末考试,孩子们回家后家长就在群里发报到;
然后怎么从中去找出哪些是没有报道的孩子,好去提醒家长报到,关心孩子是否到家呢;
这里还有一份学生名单
下面就来演示一下通过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
今天就写到这里,后面如果在生活和工作有实际例子,都会写出来分享;谢谢大家
网友评论