python办公-比对微信群学生到家报到

2021-01-28  本文已影响0人  大野的自我修养

如何通过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

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

上一篇下一篇

猜你喜欢

热点阅读