疫情期间,找出没有填报相关的寝室

疫情期间,总要统计哪些寝室(18个寝室)哪些人没有登记自己是否做核酸,是否做抗原,由于群里接龙的次序每次都不一样,而且每次都有寝室不能够及时完成任务,每次不完成的寝室还不一样,在疫情这个环境下,找出哪些寝室没完成,是一件很烦躁的事情。所以用python写了一个小程序,来快速解决,从此烦恼不在。

注:小程序没有封装,只能在编译器下才能进行,之后有时间会再优化优化,做出更好玩的东西。

代码主要分为三个部分:

1、首先读取ctal+c后的剪切板里的字符串信息;(一般每次信息统计都会让大家以接龙的形式填报信息,所以只要复制接龙的内容就好)

2、用相应的正则表达式在字符串信息中提取寝室号,并将其添加至空列表(列表1);

3、将列表1与有完整信息的列表2进行比较,得到没有填报信息的寝室找出。

然后需要做的就是狂敲他们的门,让他们填信息,再也不用在楼道里走来走去,看哪个寝室没有填写,拜托找寝室的困扰。

第一部分:提取剪切板上的内容,需要导入pyperclip的库,paste()函数可以提取最新剪切板上的内容

# 提取剪切板上的内容
    def get_dor_str_date(self):
        paragraph = str(pyperclip.paste())
        # print(paragraph)
        return paragraph

第二部分:# 对剪切板上收集到的文本进行数据提取,按大小排序,并存储在空列表中(也可以不排序,都一样)

# 对剪切板上收集到的文本进行数据提取,按大小排序,并存储在空列表中
    def list_dor_date(self):
        paragraph = self.get_dor_str_date()
        list_dor_name = []
        regex = re.compile(r'''
        (\d*\.\s)
        (\d{3})  # 如果寝室是4位数就把3改成4就好
        (\s|-|\.)*
        ''', re.VERBOSE)  # 正则表达式,用以提取宿舍号
        mo_1 = regex.findall(paragraph)
        for groups in mo_1:
            # print(groups[1])
            list_dor_name.append(int(groups[1]))
            list_dor_name.sort()  # 对寝室号进行排序,没有排序也可以
        # print(list_dor_name)
        return list_dor_name

第三部分:# 找出没有完成任务的寝室

# 找出没有完成任务的寝室
    def stubborn_dor_name(self):
        # print(self.sum_date())
        list_dor_name = self.list_dor_date()
        # 对比所有寝室名单,找出没有填报的寝室号
        stubborn_dor_name = []
        for i in self.dor_true_date:
            if i not in list_dor_name:
                stubborn_dor_name.append(i)  # 下面是缩略写法
        # stubborn_dor_name = [x for x in self.dor_true_date if x not in list_dor_name]
        print(stubborn_dor_name)  # 输出没有完成任务的寝室
        return stubborn_dor_name

完整代码:

# coding:utf-8

import re
import pyperclip


class FindStubbornDor(object):
    dor_true_date = [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 315, 317, 319, 321, 323, 325, 327]
    # def __init__(self, paragraph):
    #     self.paragraph = paragraph

    # 提取剪切板上的内容
    def get_dor_str_date(self):
        paragraph = str(pyperclip.paste())
        # print(paragraph)
        return paragraph

    # 对剪切板上收集到的文本进行数据提取,按大小排序,并存储在空列表中
    def list_dor_date(self):
        paragraph = self.get_dor_str_date()
        list_dor_name = []
        regex = re.compile(r'''
        (\d*\.\s)
        (\d{3})  # 如果寝室是4位数就把3改成4就好
        (\s|-|\.)*
        ''', re.VERBOSE)  # 正则表达式,用以提取宿舍号
        mo_1 = regex.findall(paragraph)
        for groups in mo_1:
            # print(groups[1])
            list_dor_name.append(int(groups[1]))
            list_dor_name.sort()  # 对寝室号进行排序,没有排序也可以
        # print(list_dor_name)
        return list_dor_name

    # 找出没有完成任务的寝室
    def stubborn_dor_name(self):
        # print(self.sum_date())
        list_dor_name = self.list_dor_date()
        # 对比所有寝室名单,找出没有填报的寝室号
        stubborn_dor_name = []
        for i in self.dor_true_date:
            if i not in list_dor_name:
                stubborn_dor_name.append(i)  # 下面是缩略写法
        # stubborn_dor_name = [x for x in self.dor_true_date if x not in list_dor_name]
        print(stubborn_dor_name)  # 输出没有完成任务的寝室
        return stubborn_dor_name


if __name__ == '__main__':
    # paragraph_01 = input('请输入需要统计口罩数量的语句:')
    FindStubbornDor = FindStubbornDor()
    FindStubbornDor.stubborn_dor_name()  # 直接调用最后一个函数,找出没有完成任务的寝室

使用方法:复制接龙的内容,运行程序即可(可以修改寝室数量和寝室号,改这个列表dor_true_date就好,在程序的最前面)

效果:

完整的寝室名单:

[301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 315, 317, 319, 321, 323, 325, 327]

群里接龙的的数据:(需要手动先复制一下)

2. 303
3. 306
4. 305
5. 317-2人
6. 312
7. 327
8. 319

输出结果:

[301, 302, 304, 307, 308, 309, 310, 311, 313, 315, 321, 323, 325]

上门敲他们的们就好

接龙的数据只要前面的x. xxx抑制就可以

比如:(这样也可以)

2. 305-33人阴
3. 304-阴
4. 309 22阴
5. 303-15阴
6. 307-71阴
7. 317-47正常
8. 327 727阴
9. 315-46人阴
10. 301 ,1阴
11. 319 45阴
12. 311 45阴
13. 310  35阴
14. 312 45人阴
15. 325-134阴
16. 306 44图阴
17. 308 24阴
18. 313-354阴
19. 302 434阴

代码很简单,就写着开心一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值