QQ群成员发言次数统计(正则表达式版)
1、先将QQ群的消息记录以.txt文件格式导出来,保存路径及名称自己定义(在本文我导出到Y盘,命名为test.txt)
2、程序如下:
data statistics1;
if _n_=1 then do;
patternid1=prxparse("/\s\w*-*\w*-*\w*\(\d+\)/");
patternid2=prxparse("/\(\d+\)/");
end;
retain patternid1 patternid2;
infile 'Y:\test.txt' truncover;
input string $200.;
length name $50. qq $30.;
call prxsubstr(patternid1,string,start1,length1);
call prxsubstr(patternid2,string,start2,length2);
if start1 and start2 gt 0 then do;
name=substrn(string,start1+1,length1-1);
qq=substrn(string,start2+1,length2-2);
output;
end;
run; data statistics2;
if _n_=1 then do;
patternid1=prxparse("/\s\w*-*\w*-*\w*<(\w*|\d*)@(\w*|\d*).\w+>/");
patternid2=prxparse("/<(\w*|\d*)@(\w*|\d*).\w+>/");
end;
retain patternid1 patternid2;
infile 'Y:\test.txt' truncover;
input string $200.;
length name $50. qq $30.;
call prxsubstr(patternid1,string,start1,length1);
call prxsubstr(patternid2,string,start2,length2);
if start1 and start2 gt 0 then do;
name=substrn(string,start1+1,length1-1);
qq=substrn(string,start2+1,length2-2);
output;
end;
run; data qunname;
infile 'Y:\test.txt' truncover firstobs=6 obs=6;
input @'消息对象:' qunname $;
call symput('_qunname',qunname);
run; data statistics(drop=patternid1 patternid2 string start1 start2 length1 length2);
set statistics1 statistics2;
where qq^='';
n=_n_;
run; proc sort data=statistics;by qq n;run; data match;
set statistics;
by qq n;
if last.qq then output;
drop n;
run; data _null_;
set statistics nobs=t;
call symput("_nobs",t);
stop;
run; proc sql;
create table rtf as
select qq,n(qq) as frequency,n(qq)/&_nobs.*100 as rate
from statistics
group by qq
order by 1;
quit; data rtf;
merge rtf match;
by qq;
run; proc sort data=rtf;by descending frequency;run; options nodate nonumber;
ods results=off;
title;
footnote;
ods listing close;
ods rtf file='Y:\statistics.rtf' style=Mystyles bodytitle;
proc report data=rtf nowindows style(report)={font_size=10.5pt pretext="QQ群(&_qunname.)成员发言次数及频率统计分析表" posttext="Author:liyongzhao,Created Date:2013-9-12." just=left}
style(column)={font=('times new roman',12pt)};
column name frequency rate;
define name/center style(column)={cellwidth=15%} 'QQ群成员';
define frequency/center style(column)={cellwidth=5%} '发言次数';
define rate/center style(column)={cellwidth=5%} format=6.3 '发言频率(%)';
run;
ods rtf close;
3、打开Statistics.rtf即可查看结果。
结果类似下图(截取开头部分,隐去QQ群名称和个人QQ号码):

QQ群成员发言次数统计(正则表达式版)的更多相关文章
- QQ群成员发言次数统计(词云制作)
所用数据来自于之前的一篇博客: <QQ群成员发言次数统计(正则表达式版)> 链接:http://www.cnblogs.com/liyongzhao/p/3324026.html 1.首先 ...
- 利用Python获取统计自己的qq群成员信息
利用python获取自己的qq群成员信息! 首先说明一下需要使用的工具以及技术:python3 + selenium selenium安装方法:pip install selenium 前提:获取自己 ...
- 9 行 javascript 代码获取 QQ 群成员
昨天看到一条微博:「22 行 JavaScript 代码实现 QQ 群成员提取器」. 本着好奇心点击进去,发现没有达到效果,一是 QQ 版本升级了,二是博客里面的代码也有些繁琐. 于是自己试着写了一个 ...
- 精准营销、批量提取QQ群成员号码
有时我们在做精准营销时,需要从社群里提取群成员的QQ号,群发邮件,常规的做法是手工一个个复制粘贴,这样的效率无疑是很低的,下面我来分享一个批量获取社群的QQ号方法. 需要具备以下工具: 1.大量精准Q ...
- 利用python获取自己的qq群成员信息
利用python获取自己的qq群成员信息! 首先说明一下需要使用的工具以及技术:python3 + selenium selenium安装方法:pip install selenium 前提:获取自己 ...
- 火车头采集器如何采集QQ群成员中的QQ号
如何采集QQ群群员QQ号,采集QQ号,批量采集QQ号 众所周知,QQ群群员QQ号无法导出,即使会员也不可以,那我们只能通过三方工具来实现我们的要求,那今天我们讲讲如何通过火车采集器来采集QQ群群员QQ ...
- 关于一键提取QQ群成员信息的记录
问题情境 昨天晚上回宿舍看到舍友在吐槽:天哪,我要把70多个人的QQ号全统计出来,只能一个一个地在咱们学院的学院群里找.吐了. 当时我第一反应是用python写个脚本之类的去做,因此查阅了一下资料,找 ...
- 如何采集所有QQ群成员?
首先,你需要有一个CHROME浏览器其实,你要装一个叫REGEX SCRAPER的插件 在qun.qzone.qq.com打开你的QQ群页面-查看群成员 点击REGEX 插件, 粘贴上这个代码 tex ...
- (获取qq群成员信息,并下载头像,每个群保存一个文件夹)
# 1.获取到自己qq里面所有的群,并且保存每个群里面的群成员信息到mongodb里面# 下载每个群的群成员的头像# 1.抓包,抓到获取自己所有qq群的接口 requests模块 https://qu ...
随机推荐
- Python 条件控制
Python 条件控制 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 语句 Python中if语 ...
- Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化
https://blog.csdn.net/kroclin/article/details/40902721 一.前言相信数据序列化大家都多多少少有接触到,比如自定义了一个实体类,需要在activit ...
- mysql安装和启动
1.在cmd的bin目录执行 mysqld --initialize-insecure程序会在动MySQL文件夹下创建data文件夹以及对应的文件2.bin目录下执行,mysqld --install ...
- 【框架】selenium网页端的基本自动化框架(四)
- C# 中的冒泡排序
int num; , , , , , , , , , }; ; i < arr.Length; i++) { ; j < arr.Length; j++) { if (arr[j] > ...
- tensorboard使用方法
http://blog.csdn.net/u010099080/article/details/77426577
- cocos2d-x学习笔记(贪吃蛇代码)
方向键控制蛇运动:上↑:右→:下↓:左←. 百度网盘链接:https://pan.baidu.com/s/1c1FSXaw 提取密码:u1kr
- JAVA数据库操作回滚小结
一:总结的原因 在最近的工作中,遇到了一个一对多关系多表数据传输,传送成功状态绑定在主数据表上,因为代码不健壮问题造成了主表传送状态更新失败,而子表数据就被重复插入.又由于数据传输频率很高,我们的测试 ...
- js添加锚点
<div name="1F" id="1F"></div> <div class="top_img displayno& ...
- 2019-04-12-day031-进程基础
操作系统的发展历程 主要的人机矛盾是什么 : CPU的使用率 输入\输出数据和CPU计算没有关系 操作系统是怎么进化的 传统的纸带输入 磁带的存储降低了输入输出数据占用的时间,提高了CPU的利用率 多 ...