| 
 | 
 
 
 楼主 |
发表于 2023-6-5 14:33:50
|
显示全部楼层
 
 
 
总参会名单,10个中队 参会统计: 
D盘文件夹250,有excel, 10个中队名单: 
 
- import os
 
 - import pandas as pd
 
 - import re
 
  
- # 设置文件夹路径
 
 - folder_path = r"D:\\250"
 
  
- # 存储A列数据的列表
 
 - list1 = []
 
  
- # 要读取的工作表名称
 
 - sheet_name = "sheet1"
 
  
- # 循环读取每个Excel文件
 
 - for file_name in os.listdir(folder_path):
 
 -     file_path = os.path.join(folder_path, file_name)
 
 -     if os.path.isfile(file_path) and file_name.endswith(".xlsx"):
 
 -         # 读取Excel文件
 
 -         xls = pd.ExcelFile(file_path)
 
  
-         # 判断指定的工作表是否存在
 
 -         if sheet_name in xls.sheet_names:
 
 -             # 将 example.xlsx 文件中 Sheet1 表格的第一列数据读取并存储为 pandas.DataFrame 对象 df;获取A列转为列表
 
 -             df = pd.read_excel(file_path, sheet_name=sheet_name, usecols=[0], skiprows=6, names=["A"])
 
 -             col_A = df["A"].tolist()
 
 -             list1 += col_A
 
  
- #print(list1)
 
  
- list2 = []
 
  
- list3 = []
 
  
- # 遍历所有txt文件
 
 - for txt_file in os.listdir(folder_path):
 
 -     if txt_file.endswith(".txt"):
 
 -         # 读取当前txt文件中的数据到list2中
 
 -         with open(os.path.join(folder_path, txt_file), "r",encoding='gb18030') as f:
 
 -             list2.extend(f.read().splitlines())
 
 -         # 判断哪些人未参加会议并存入list3中
 
 -         # for name in list2:
 
 -         #     if not any(name in c for c in list1):
 
 -         #         list3.append(name)
 
 -         attend_number1 = 0
 
 -         unattend_number2 = 0
 
 -         for item in list2:
 
 -             found = False
 
 -             for s in list1:
 
 -                 item=item.split("$")[0]
 
 -                 item = re.sub('([^\u4e00-\u9fa5])', '', item)
 
 -                 s = re.sub('([^\u4e00-\u9fa5])', '', s)
 
 -                 if str(item) in s:
 
 -                     #print(item+" "+s)
 
 -                     found = True
 
 -                     attend_number1 += 1
 
 -                     break
 
 -             if not found:
 
 -                 list3.append(item)
 
  
-         #print("参加会议人员数量:{}人".format(number2))
 
 -         unattend_number2 = len(list2) - attend_number1
 
  
 
-         #print("参加会议人员数量:{}人".format(number2))
 
 -         # 输出当前中队参会人员数量和未参会人员名单
 
 -         print(f"{os.path.splitext(txt_file)[0]}中队参加会议人员数量: {attend_number1}人,未参加会议{unattend_number2}人,名单为{list3}\n\n")
 
  
-         # 清空list2和list3
 
 -         list2.clear()
 
 -         list3.clear()
 
 
  复制代码 |   
 
 
 
 |