3.2.5.4 分析黑名单
2015-09-07 13:29
225 查看
假如你正在开发手机的应用,比如从云中心那里获取到一串黑名单的电话本号码,然而这些电话本的号码是作为一个文本文件返回来的,需要把这些一行一行的文本分析成电信供应商、电话号码、备注信息、标记的次数,其实这个过程就是把序列化的信息转换为结构化的信息,这样才可更方便处理,比如把电话号码拿出来作为拦截的比较。
例子:
text = """18701808546 1位用户诈骗号码 (2015-08-24)
15396989999 1位用户骚扰号码 (2015-08-23)
15992460848 1位用户诈骗号码 (2015-08-23)
15625759163 1位用户推销、中介 (2015-08-23)
15994768049 1位用户发送诈骗信息 (2015-08-23)
18670826757 1位用户诈骗号码 (2015-08-22)
13141465810 1位用户诈骗号码 (2015-08-22)
13860039526: 1位用户诈骗号码 (2015-08-22)"""
entries = re.split("\n+", text)
print(entries)
l = [re.split(":? ", entry, 2) for entry in entries]
print(l)
print('\n输出电话号码:')
for phone in l:
print(phone[0])
结果输出如下:
['18701808546 1位用户诈骗号码 (2015-08-24) ', '15396989999 1位用户骚扰号码 (2015-08-23)', '15992460848 1位用户诈骗号码 (2015-08-23) ', '15625759163 1位用户推销、中介 (2015-08-23)', '15994768049 1位用户发送诈骗信息 (2015-08-23)', '18670826757 1位用户诈骗号码 (2015-08-22) ', '13141465810 1位用户诈骗号码 (2015-08-22) ', '13860039526: 1位用户诈骗号码 (2015-08-22)']
[['18701808546', '1位用户诈骗号码', '(2015-08-24) '], ['15396989999', '1位用户骚扰号码', '(2015-08-23)'], ['15992460848', '1位用户诈骗号码', '(2015-08-23) '], ['15625759163', '1位用户推销、中介', '(2015-08-23)'], ['15994768049', '1位用户发送诈骗信息', '(2015-08-23)'], ['18670826757', '1位用户诈骗号码', '(2015-08-22) '], ['13141465810', '1位用户诈骗号码', '(2015-08-22) '], ['13860039526', '1位用户诈骗号码', '(2015-08-22)']]
输出电话号码:
18701808546
15396989999
15992460848
15625759163
15994768049
18670826757
13141465810
13860039526
在这个例子里,使用re.split("\n+", text)来先把多行空行去掉,这样所有文本紧挨在一起,使用 [re.split(":? ", entry, 2) for entry in entries]来把每一行的文本拆分成可用的信息格式,并且最多分成三组的方式,最后通过遍历列表l就可以得到所有电话号码结果,这样当有来电显示时,就可以判断该号码是否在这些列表里,如果在就把电话挂断,阻挡一切骚扰电话、广告电话,提高整个社会的效率,像这种烦人的电话总会在工作时间打断你,在你刚睡到床上时打来,或者在开车过程中不断打来,带来很大的问题。
蔡军生 QQ:9073204 深圳
例子:
text = """18701808546 1位用户诈骗号码 (2015-08-24)
15396989999 1位用户骚扰号码 (2015-08-23)
15992460848 1位用户诈骗号码 (2015-08-23)
15625759163 1位用户推销、中介 (2015-08-23)
15994768049 1位用户发送诈骗信息 (2015-08-23)
18670826757 1位用户诈骗号码 (2015-08-22)
13141465810 1位用户诈骗号码 (2015-08-22)
13860039526: 1位用户诈骗号码 (2015-08-22)"""
entries = re.split("\n+", text)
print(entries)
l = [re.split(":? ", entry, 2) for entry in entries]
print(l)
print('\n输出电话号码:')
for phone in l:
print(phone[0])
结果输出如下:
['18701808546 1位用户诈骗号码 (2015-08-24) ', '15396989999 1位用户骚扰号码 (2015-08-23)', '15992460848 1位用户诈骗号码 (2015-08-23) ', '15625759163 1位用户推销、中介 (2015-08-23)', '15994768049 1位用户发送诈骗信息 (2015-08-23)', '18670826757 1位用户诈骗号码 (2015-08-22) ', '13141465810 1位用户诈骗号码 (2015-08-22) ', '13860039526: 1位用户诈骗号码 (2015-08-22)']
[['18701808546', '1位用户诈骗号码', '(2015-08-24) '], ['15396989999', '1位用户骚扰号码', '(2015-08-23)'], ['15992460848', '1位用户诈骗号码', '(2015-08-23) '], ['15625759163', '1位用户推销、中介', '(2015-08-23)'], ['15994768049', '1位用户发送诈骗信息', '(2015-08-23)'], ['18670826757', '1位用户诈骗号码', '(2015-08-22) '], ['13141465810', '1位用户诈骗号码', '(2015-08-22) '], ['13860039526', '1位用户诈骗号码', '(2015-08-22)']]
输出电话号码:
18701808546
15396989999
15992460848
15625759163
15994768049
18670826757
13141465810
13860039526
在这个例子里,使用re.split("\n+", text)来先把多行空行去掉,这样所有文本紧挨在一起,使用 [re.split(":? ", entry, 2) for entry in entries]来把每一行的文本拆分成可用的信息格式,并且最多分成三组的方式,最后通过遍历列表l就可以得到所有电话号码结果,这样当有来电显示时,就可以判断该号码是否在这些列表里,如果在就把电话挂断,阻挡一切骚扰电话、广告电话,提高整个社会的效率,像这种烦人的电话总会在工作时间打断你,在你刚睡到床上时打来,或者在开车过程中不断打来,带来很大的问题。
蔡军生 QQ:9073204 深圳
相关文章推荐
- 关于硬盘UUID更改及显示的方法
- android模糊效果blur
- ip定位资源收集
- Oracle中获取执行计划的几种方法分析
- 把 MWeb Lite 的文档库文档和数据搬到 MWeb 正式版中
- oc获取相册源码
- hdu 5001
- 网页页面 自动刷新的3种代码
- hdu 5001
- 经典算法:X进制数转换为Y进制数
- JAVA Key=Key模型(一对一双向唯一)
- ACM —— 1002 487-3279
- 客户端关闭连接服务器端没反应
- ChangeKeyBoad Caps ctrl
- Android内核解读-Android系统的开机启动过程
- Nginx的反向代理 和 负载均衡
- 跑马灯 TextView效果设计
- Zlib文件压缩和解压
- 编译型语言和解释性语言的区别
- Netty