美文网首页
零基础学编程——如何从聊天记录当中提取QQ号,以及不同QQ号发言

零基础学编程——如何从聊天记录当中提取QQ号,以及不同QQ号发言

作者: 胡矿 | 来源:发表于2016-11-10 14:17 被阅读0次

一、导出QQ聊天记录

在QQ当中选中一个群,把聊天记录导出成TXT文本格式,把导出的文件命名为 chatlog.txt

QQ的聊天记录要怎么导出备份、文本/TXT模式

把导出的聊天记录,用记事本打开,另存为 utf-8 格式,覆盖保存,文件名仍然为 chatlog.txt

二、提取QQ号出现次数,即统计发言的数量

# -*- coding: utf-8 -*-

#
# Created by thiswind on 2016/11/10.
#

import pdb
import re

# read data from file
f = open('chatlog.txt')
data = f.read()
f.close()


# 查找所有出现的QQ号
# 用模式匹配两个括号之间一串数字的模式: '(一串数字)'
# \( 表示括号,因为 '(' 是关键字,所以要用 '\' 进行转义
# \) 同样表示括号,原因同上
# \d{3,12} 表示至少有3个数字,最多不超过12个数字,'\d'表示数字,{3,12} 表示数字的个数的范围
# 12位已经有一千亿,这个是银河系里恒星的数量,也是三百万年来所有人类加起来的总数(《2001: A Space Odyssey》),所以QQ号不应该超过12位了。
pa = re.compile(r'\(\d{3,12}\)')

# 得到命中的结果列表
hits = re.findall(pa, data)

print '命中的结果:'
print hits
print '-' * 10  # 打印一条横线
print '共 %s 次发言' % len(hits)

请自己运行查看结果。

参考:正则表达式——廖雪峰的官方网站

三、统计多少个不同的QQ号发过言

运行上面的例子,会发现每一次发言的QQ号都被列出来了,其中有许多QQ号是重复的,我们如果要统计到底有多少人发过言,就要把重复的QQ号都删掉。

在Python当中,要删除一个列表当中的重复项,只需要使用集合<code>set</code>就可以了。学过数据结构的同学应该知道,集合是不允许元素重复的。

转换完成后,再用<code>list</code>把结果从心转换回列表

hits = .... # 上面代码当中的命中结果列表

# 删除命中结果中的重复项
person_list = list(set(hits))

完整的代码如下:

# -*- coding: utf-8 -*-

#
# Created by thiswind on 2016/11/10.
#

import pdb
import re

# read data from file
f = open('chatlog.txt')
data = f.read()
f.close()


# 查找所有出现的QQ号
# 用模式匹配两个括号之间一串数字的模式: '(一串数字)'
# \( 表示括号,因为 '(' 是关键字,所以要用 '\' 进行转义
# \) 同样表示括号,原因同上
# \d{3,12} 表示至少有3个数字,最多不超过12个数字,'\d'表示数字,{3,12} 表示数字的个数的范围
# 12位已经有一千亿,这个是银河系里恒星的数量,也是三百万年来所有人类加起来的总数(《2001: A Space Odyssey》),所以QQ号不应该超过12位了。
pa = re.compile(r'\(\d{3,12}\)')

# 得到命中的结果列表
hits = re.findall(pa, data)

print '命中的结果:'
print hits
print '-' * 10  # 打印一条横线
print '共 %s 次发言' % len(hits)


# 删除命中结果中的重复项
person_list = list(set(hits))

print '发言者列表'
print person_list
print '-' * 10  # 打印一条横线
print '共 %s 个不同的发言者' % len(person_list)

参考:使用dict和set——廖雪峰的官方网站

请自己运行查看结果

然后呢?

你现在已经可以提取QQ号了,也已经可以列出不同QQ号的出现数量了,那么你就可以根据"零基础学编程"——统计一天24小时当中每小时发言的数量,并用Excel画出图表的套路,绘制出每个人发言次数的图表了。

注意:题目要求的是只绘制发言最多的前十个

相关文章

网友评论

      本文标题:零基础学编程——如何从聊天记录当中提取QQ号,以及不同QQ号发言

      本文链接:https://www.haomeiwen.com/subject/xkhxpttx.html