Selon la liste des étudiants (fichier Excel) des statistiques sur les membres du groupe QQ (assistants pourraient avoir besoin)


Brève description:
Liste une salle de classe des élèves fichier Excel existants, les statistiques sur les membres du groupe QQ d'une liste des étudiants sur la liste pour trouver les [élèves] et [les étudiants] ne sont pas sur la liste.


Idées:
les pages d'une copie de certains éléments, à la être l' analyse xml.


Exigences:
1, le premier fichier Excel comme un nom d'étudiant C.
2, les formats de nom du groupe QQ propriétaire sont: [Nom - le nom de la classe] ou [] ou [vide].


Des mesures spécifiques:

Insérer ici l'image Description
Insérer ici l'image Description
Insérer ici l'image Description

Input.html nouveau fichier, le cadre supérieur pour copier le fichier input.html de code.
Insérer ici l'image Description
Exécutez l'analyse de test.py du programme, comme suit:

######################################################################
#
# 使用方法:
# 1、人工确保所有名字格式严格正确(“姓名”或者“姓名-班级”)。
# 2、将qq群成员管理网页html中的table元素copy到input.html中。
# 3、运行程序。
# 
######################################################################

from lxml import etree
import xlrd

lines = open('input.html', encoding='utf-8').readlines()

html=''
for line in lines:
    html += line;

page = etree.HTML(html)
members = page.findall('.//table[@id="groupMember"]/tbody[@class="list"]/tr')

count = 0
insiders_num = 0
outsiders_mum = 0
data=xlrd.open_workbook(r'计算机xx选课名单.xls')
sheet1 = data.sheets()[0]
outsiders = [] # 存放不在名单中的人

for member in members:
    name = member.findall('.//td[@class="td-card"]/span/span')
    if name[0].text == None: # 如果群名称为空
        name = ""
    else:
        name = name[0].text.strip().split('-')[0]
    qq = member.findall('.//td')[4]
    qq = qq.text.strip()
    
    print (str(count+1)+':', end=' ')
    print (name,end=' ')

    # 搜索name是否在excel名单中
    flag = False
    if (len(name) >= 2 and len(name) <= 3):
        rows = sheet1.nrows
        for i in range(rows):
            excel_mem_nam = str(sheet1.cell(i,2).value)
            if (excel_mem_nam.find(name) != -1):
                flag = True
                break

    if (flag): # 如果在excel名单中
        insiders_num += 1
        print ('yes')
    else: # 否则
        outsiders.append([name,qq])
        outsiders_mum += 1;
        print ('no')

    count += 1

assert (outsiders_mum == len(outsiders))

print ()
print ("群总人数:" + str(count))
print ("在名单中的人数:" + str(insiders_num))
print ("不在名单中的人数(包含助教):"+str(outsiders_mum))

assert (count == insiders_num + outsiders_mum)

print ()
print ("不在名单中的人如下(群内名称,qq号):")
for mem in outsiders:
    print (mem)

Les résultats sont les suivants:
Insérer ici l'image Description

Publié 92 articles originaux · louange gagné 2 · Vues 3436

Je suppose que tu aimes

Origine blog.csdn.net/zxc120389574/article/details/104347192
conseillé
Classement