玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

在python里面如果更好的进行字符过滤?

比如我在采集一个网站的时候,我想直接过滤或是替换掉一些没用的信息,比如QQ 手机 或是 www 开头的东西

数据量小一点还好我可以这样写:

if "http" or "www" or "QQ" or "qq" in content:
    ....

但是数据量大的话那不是很悲剧?
难道要一直or来连接?

最优雅的实现方式是什么?我想能用正则的话肯定是比较好的

因为需要匹配的信息太多了 ,比如QQ号码,网址,电话等这些都要进行查找和替换

这个取决于你的数据规模,数据规模小,顶多你把关键字存到redis或者什么配置文件中,每次爬下来的数据,都把所有关键字取出来,replace即可。

但是因为你是网络爬虫,如果关键字和需要过滤的字符串又特别大,即使用正则,效率也是很堪忧的。

举个例子,你有100000个关键字需要过滤掉,假设你能将这100000个关键字合并成用50000个正则表达式(是人工写这么多正则还是自动生成正则先不谈),每次爬下来的字符串又特长,至少需要循环50000次才能匹配所有正则。我觉得这种朴素的方法可能就是不可用的了。

仅我个人建议啊,可以参考这篇文章:http://blog.jobbole.com/99910/ 讲的是如何把关键字分段,建立关键词索引达到比较高效的查询的。这个文章是介绍stackoverflow的tag引擎的。

要么建议上ElasticSearch这些重量级的了。。。显然这里端端的几十个字没办法说了。

楼上说的很对,但如果数据小的话可以考虑使用any

a = [1, 2]
b = [2, 3]
if any(i in b for i in a):
    pass

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd14237.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2018年07月11日 - 21时37分07秒 发布自玩蛇网

我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules