核对QQ群成员是否在选课名单里,并检查哪些同学选课了但是没进群。
选课名单的格式是excel表格。
我们的目的是,想要知道:
(1)哪些群成员不在选课名单里
(2)哪些同学在选课名单却不在QQ群里。
一、根据QQ群号获取群成员昵称
登录QQ群官网,选择群管理-成员管理-目标QQ群,右键查看(或者直接Windows+F12快捷键),在控制台输入如下代码,获取群成员昵称。这里需要注意的是,要想输出所有群成员的昵称,需要在输入代码前下拉网页直至加载出所有群成员。
代码如下:
var n=$('#groupMember .list tr.mb');
var t='昵称\n';
for(var i=0;i<n.length;i++) {
var mp = n[i].children[3].children[0].innerText;
t +=mp.trim() + '\n';
}
复制群名片粘贴保存到csv文件
我的群名片保存在member.csv中。只有一列,没有写标题,第一行即为第一个群成员的群名片。
二、比较群名片和选课名单
采用Python编程。这里需要用到pandas和re库。
1.读取群名片到dataframe
import pandas as pd
df = pd.read_csv("./member.csv",header=None)
2.提取群名片中的汉字(组成名字)
群成员的名字保存在list中。因为我处理的群名片的格式是姓名+班号,所以还需要提取群名片中的汉字。利用正则表达式提取汉字,再连接成名字。
import re
### 列表 元素是名字 用于保存群名片中的名字,也就是群成员的名字
list1 = [] ## 群成员名字
#### 提取汉字 #####
for a_str in df.iloc[:,0]:### 遍历群名片dataframe的第一列 也就是群名片
## 正则表达式 从群名片中获取汉字 返回汉字列表
a_list = re.findall(r'[\u4e00-\u9fa5]', a_str)
a = ""
for j in a_list:### 遍历汉字列表 将汉字连起来组成名字
a =a+j ## 连接汉字
print(a)## a即为当前群成员的名字
list1.append(a)## 追加新名字
print(list1)
3.读取选课名单中的姓名
#### 读取选课名单中的姓名列 并转成list
real_names = pd.read_excel('./选课名单.xlsx')## 选课名单dataframe
list2 = real_names['姓名'].to_list()## 选取dataframe姓名列,并转list
4.对比两个list,找出它们相对于对方的相对补集
list1_2 = []## 在1中不在2中的人
list2_1 = []## 在2中不在1中的人
### 遍历群成员名字 找出不在选课名单中的人
for i in list1:
if i not in list2:
list1_2.append(i)
### 遍历选课名单的姓名列 找出不在群里的人
for i in list2:
if i not in list1:
list2_1.append(i)
list1_2 即为在群里,不在选课名单 。“在课程群,但没选课”
list2_1即为在选课名单,不在群里 。“已选课,但没在课程群”
好了,到这里就结束了,有什么不妥当的地方还望大家指正。