文档章节

导入CSV文件就行数据整理分析

Kefy
 Kefy
发布于 07/18 12:02
字数 799
阅读 17
收藏 0
#-*-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))

 

© 著作权归作者所有

共有 人打赏支持
Kefy
粉丝 0
博文 22
码字总数 44217
作品 0
西安
程序员
CSV、JSON文件导入到mongo数据库

首先生成一个文本文件,可以是json或者csv的,每行一条数据,很好整理吧,用一般的文本编辑器或者从office中都可以生成。 然后执行下面的导入命令: /usr/local/mongodb/bin/mongoimport -d ...

千山万水
2014/08/14
0
0
如何使用SPSS查看大CSV文件(超过100万行)?

本文原创作者:鲲之鹏(http://www.site-digger.com) 本文原始链接:http://www.site-digger.com/html/articles/20170208/135.html 背景:Excel( Excel 2007-2016)最多仅能显示100万(1,0...

xiankunzhipeng
07/30
0
0
PowerBI分析Exchange服务器IIS运行日志

只要是基于Windows Server 的IIS来提供Web服务的应用,其实都可以对IIS的日志W3C进行分析,这样可以快速的了解整个web站点的运行情况,特别是对一些请求页面响应时间有要要求的,都可以从这些...

ZJUNSEN
06/07
0
0
基于Excel2013的数据导入

请确认安装好Excel2013,如何安装Excel2013请自行上网搜索。 Excel2013下载网盘链接: https://pan.baidu.com/s/1MdF2pTxlJqZMqILcW2PeBA 密码: rxuv 这个安装包中有破解软件KMSpico,当中有使...

潇洒坤
06/16
0
0
Python爬虫实战-抓取《盗墓笔记》所有章节及链接

image.png 本次以一个盗墓笔记的小说阅读网(http://seputu.com)为例,抓取盗墓笔记的标题、章节名和链接,如下图 前提: 这是一个静态网站,标题、章节都不是由JavaScript动态加载的,无代...

爱吃西瓜的番茄酱
2017/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ionic安卓打包过程

在项目文件夹下执行命令 ionic cordova platform add android 打开android studio -> Configure->SDK Manager 安装android 26...

lilugirl
3分钟前
0
0
arts-week14

Algorithm 923. 3Sum With Multiplicity - LeetCode Review Building a network attached storage device with a Raspberry Pi 搭建家用储存系统,使用树莓派和移动硬盘,搭建一个 NAS,操作......

yysue
4分钟前
0
0
理解OAuth 2.0

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。...

吴伟祥
17分钟前
0
0
源码中常用英文单词

Resolver BeansDtdResolver : spring bean dtd 解析器

职业搬砖工程师
18分钟前
0
0
区块链入门教程以太坊源码分析event源码分析

兄弟连区块链入门教程以太坊源码分析event源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退...

兄弟连区块链入门教程
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部