假如你正在开发手机的应用,比如从云中心那里获取到一串黑名单的电话本号码,然而这些电话本的号码是作为一个文本文件返回来的,需要把这些一行一行的文本分析成电信供应商、电话号码、备注信息、标记的次数,其实这个过程就是把序列化的信息转换为结构化的信息,这样才可更方便处理,比如把电话号码拿出来作为拦截的比较。
例子:
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 深圳
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/caimouse/article/details/48264471