De acuerdo con la lista de los estudiantes (archivo Excel) estadísticas sobre los miembros del grupo QQ (asistentes podrían necesitar)


Breve descripción:
Lista de un aula de estudiantes archivo de Excel existentes, las estadísticas sobre los miembros del grupo de QQ de una lista de estudiantes en la lista para encontrar los [estudiantes] y [los estudiantes] no están en la lista.


Ideas:
las páginas de una copia de algunos elementos fuera, sean análisis XML.


Requisitos:
1, el primer archivo de Excel como el nombre del estudiante C.
2, formatos de nombre de usuario QQ grupo son: [Nombre - el nombre de la clase] o [] o [vacío].


Los pasos específicos:

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

Input.html nuevo archivo, el marco superior para copiar el archivo de código input.html.
Aquí Insertar imagen Descripción
Ejecutar el análisis test.py programa, de la siguiente manera:

######################################################################
#
# 使用方法:
# 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)

Los resultados son los siguientes:
Aquí Insertar imagen Descripción

Publicado 92 artículos originales · ganado elogios 2 · Vistas 3436

Supongo que te gusta

Origin blog.csdn.net/zxc120389574/article/details/104347192
Recomendado
Clasificación