if cc['filter']: for key,value in cc['filter'].items(): for cs in value: if re.search(cs,item[key]) is None: print('pass') item = item else: print('not pass') item = None break return item
代码如上,从filter里获取正则表达式和要匹配的字段(filter的数据在下面),如果正则匹配的结果是None(说明没有匹配到)这条数据没问题,如果匹配到了,整个item=None,跳出循环。
但是现在有三个字段,四个正则,只要匹配结果是None,循环就结束了,后面的正则就不会执行了...按理说不应该把全部的正则匹配一遍么或者遇到else为止么
'filter':{ 'title': [ '.*?_国网', '题材瞻', ], 'content': [ '\(来源:.*?\)' ], 'source':[ '.*?hangq' ], 'url':[] }
item的数据:
item = {'content': '(来源:新浪网)一、题材前瞻 1、MicroLED显示技术突破量产关卡商用进程有望进一步加速、国星光电、华灿光电。 (来源:中国网财经)', 'source': '旺角资讯', 'title': '个股精选(题材前瞻)_中国网', 'url': '', }
如图,filter里有四个正则需要匹配,但是实际上只匹配了两个,后面的就运行了