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 ...
随机推荐
- 康拓展开-排列的hash
对于一个集合内所有元素的排列,康拓展开是一个无冲突的hash法.其规则便是将排列在逻辑上排好序,然后每个排列的序号即是hash值. 关键就在如何快速求出序号和快速还原啦. 首先我们确定一好集合内各元素 ...
- 『TensorFlow』第三弹_可视化框架介绍_悄悄问圣僧
添加记录节点 -> 汇总记录节点 -> run汇总节点 -> [书写器生成]书写入文件 [-> 刷新缓冲区] 可视化关键点: 注意, 1.with tf.name_scope( ...
- React文档(十二)组合vs继承
React拥有很强大的组合模型,我们建议使用组合来替代继承来重利用组件之间的代码. 在本章节中,我们将讨论一些开发者经常触及继承的问题,并且我们该如何使用组合来解决这些问题. 组合 一些组件事先不知道 ...
- tcp滑动窗口详解(2)
http://blog.csdn.net/yujun00/article/details/636495 ARQ与滑动窗口概念 滑动窗口协议,是TCP使用的一种流量控制方法.该协议允许发送方在停止并等 ...
- [hdu P4334] Trouble
[hdu P4334] Trouble Hassan is in trouble. His mathematics teacher has given him a very difficult pro ...
- 【lintcode17/18】Subset, SubsetII
题目:给定一个含不同整数的集合,返回其所有的子集. 样例:如果 S = [1,2,3],有如下的解:[[3],[1],[2],[1,2,3],[1,3],[1,2],[2,3],[]] 思路:因为此题 ...
- ID基本操作(在框架内处理文本)5.28
1.可以直接拖入文档,word,excel,rtf,还可以选中文字,导出文本. 2. 批量把一段文字改为另一段. 还可以改特殊符号.定义范围 . 建立文字后鼠标右键,选择文本框架选项 直接拖动文本框架 ...
- 手机端网页技术--使自己做的asp.net网页适应手机浏览
使自己做的asp.net网页适应手机浏览 特别提醒: 对于文本框和其他控件,无法自适应,只有纯粹的文本和table的单元格可以自适应,其他的只有设置为具体的宽度,或者在一个表格中(本来在电脑中显示一行 ...
- vue-router进阶-2-路由原信息
//meta字段,一个路由匹配到的所有路由记录会暴露为 $route 对象(还有在导航守卫中的路有对象)的 $route.matched 数组. const router = new VueRoute ...
- centos下redis安全相关
博文背景: 由于发现众多同学,在使用云服务器时,安装的redis3.0+版本都关闭了protected-mode,因而都遭遇了挖矿病毒的攻击,使得服务器99%的占用率!! 因此我们在使用redis时候 ...