疫情期间,总要统计哪些寝室(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阴
代码很简单,就写着开心一下