导入CSV文件就行数据整理分析
2018-07-18 12:02
387 查看
#-*-coding:utf-8-*- import csv,os,re,math localPath=input("请输入所有群文件的根目录:") #所有QQ群文件的物理根目录路径 def info(): info_dic=[] dirList=os.listdir(localPath) #获取根目录下所有QQ群文件的名称 #遍历每个群 for i in dirList: group_list=re.findall(r"(.+)[(]|([0-9]+)[)][.]",i) #检索群名称和号码 if len(group_list)==1: group_name=group_list[0][0].strip() #群名称 group_nums=group_list[0][1].strip() #群号码 else: group_name=group_list[0][0].strip() group_nums=group_list[1][1].strip() file_localPath=localPath+"\\"+i #拼接群文件路径 csv_reader = csv.reader(open(file_localPath,encoding='utf-8')) #打开群文件 # print("---------------%s,%s---------------"%(group_name,group_nums)) #遍历每个群里的用户 for row in csv_reader: user_list=re.findall(r"(.+)[<]|([0-9]+)@qq[.]com",row[0]) #检索用户名和号码 if len(user_list)==1: #检索结果条件判断 user_name=user_list[0][0].strip() #用户名 user_nums=user_list[0][1].strip() #用户号码 else: user_name=user_list[0][0].strip() user_nums=user_list[1][1].strip() info_dic.append((group_name,group_nums,user_name,user_nums)) return info_dic #生成含有'QQ群名称', 'QQ群号码','QQ昵称','QQ号码'统计的CSV文件 def creatFile(): headers = ['QQ群名称', 'QQ群号码','QQ昵称','QQ号码'] with open('d:/info.csv', 'w',encoding='utf-8-sig',newline='') as f: #默认生成文件保存在d:/info.csv # 标头在这里传入,作为第一行数据 writer = csv.DictWriter(f, headers) writer.writeheader() Info=info() for row in Info: dic={'QQ群名称':row[0],'QQ群号码':row[1],'QQ昵称':row[2],'QQ号码':row[3]} writer.writerow(dic) #查找含有贷款|信用卡|借条的用户 def find_keywords_users(): Info=info() for row in Info: var=re.findall("贷款|信用卡|借条",row[2]) if var: print("匹配到用户:%s(%s)含有%s,属于群:%s(%s)"%(row[2],row[3],var,row[0],row[1])) #查找群众用户的数量 def count_userNums(): Info=info() li=[] group_users=[] for row in Info: li.append("%s(%s)"%(row[0],row[1])) tu=set(li) for i in tu: Count=li.count(i) group_users.append([i,Count]) print("%s这个群中,共有%d个用户"%(i,Count)) #每个群的平均昵称长度 def len_username_arg(): Info=info() dic={} for row in Info: KEY=row[0]+row[1] if KEY in dic.keys(): dic[KEY].append(len(row[2])) else: dic[KEY]=[len(row[2])] for i in dic.items(): avg=sum(i[1])/len(i[1]) print("%s群的平均昵称长度是:%d"%(i[0],avg)) #每个群的平均QQ号码位数 def len_usernums_arg(): Info=info() dic={} for row in Info: KEY=row[0]+row[1] if KEY in dic.keys(): dic[KEY].append(len(row[3])) else: dic[KEY]=[len(row[3])] for i in dic.items(): avg=sum(i[1])/len(i[1]) print("%s群的平均QQ号码位数是:%d位"%(i[0],avg)) #该群成员最大QQ号码位数 def len_usernums_max(): Info=info() dic={} for row in Info: KEY=row[0]+row[1] if KEY in dic.keys(): dic[KEY].append(len(row[3])) else: dic[KEY]=[len(row[3])] for i in dic.items(): MAX=max(i[1]) print("%s群的最大QQ号码位数是:%d位"%(i[0],MAX)) #有最多共同用户的两个群 def users_max(): Info=info() dic={} for row in Info: KEY=row[0]+row[1] if KEY in dic.keys(): dic[KEY].append(row[3]) else: dic[KEY]=[row[3]] MAX_Len=0 group1="" group2="" for i in dic.items(): MAX=i for x in dic.items(): if MAX[0] is not x[0]: Len=len(set(MAX[1]).intersection(set(i[1]))) if Len>MAX_Len: MAX_Len=Len group1=MAX[0] group2=x[0] print("“%s”和“%s”有最多共同的QQ号码,共计:%d个"%(group1,group2,MAX_Len))
相关文章推荐
- 如何将 JSON, Text, XML, CSV 数据文件导入 MySQL
- mysql从csv文件导入数据时提示int类型出现' '(空字符串)
- csv文件数据批量导入hbase1
- JAVA WEB 实现文件数据导入(CSV、TXT、excel)
- vbs 导入csv文件数据到AD
- 数据库导入/导出csv格式的数据文件+添加新的字段
- 如何将 JSON, Text, XML, CSV 数据文件导入 MySQL
- 使用ODBC, 将CSV文件里的数据导入DataSet
- PHP批量导入和导出数据为CSV文件 (自适应版)
- 将大量有规律txt文本数据转换成xml格式,在导入excel,生成excel文件,在导入spass中,对数据进行分析
- MySQL如何导入csv格式数据文件解决方案
- mysql从csv文件导入数据时提示int类型出现' '(空字符串)
- php中数据的批量导入(csv文件)
- Navicat for MySQL 执行sql文件过程分析(导入数据)
- 如何将数据库的数据导入到csv文件中
- JAVA WEB 实现文件数据导入(CSV、TXT、excel)
- csv数据文件 导入数据库乱码(不显示)
- 使用RMySQL将csv文件数据导入MySQL数据库
- MySQL如何导入csv格式数据文件解决方案
- 用COPY命令从csv文件中导入数据