所以我正在使用reddit API来监控销售子版本,我有这部分代码:
if(any(w.lower() in re.search('%s(.*)%s' % ("[h]", "[w]"), i['data']['title'].lower()).group(1).lower() for w in wants)
and i['data']['id'] not in urls):
urls[i['data']['id']] = [i['data']['title'],i['data']['url']]
实际上,它需要reddit帖子标题,并选择该标题中[w]和[h]标签之间的所有文本。然后检查“想要”列表中定义的任何单词是否出现在标题中,如果是,则将标题和reddit链接添加到数组中。
我测试的一个例子是希望列表中的 ergodox 这个词,帖子标题是 [us-wi] [h] ergodox infinity(带sip socket) mod)[w] paypal 。但是帖子没有被添加到数组中,因为上面的if(any ...)语句从未被证实为真,但我不明白为什么。
另一个问题是,一旦修复,有时[h]和[w]将出现相反的方式,是否有任何简短的方法可以实现这一点?或者它是否需要if语句的或扩展名?
提前致谢:)
编辑以表达对评论的礼貌,试图简化哪些不起作用:
for w in wants:
if w.lower() in i['data']['title'].lower() and i['data']['id'] not in urls:
urls[i['data']['id']] = [[i['data']['title'],i['data']['url']]
答案 0 :(得分:1)
尝试执行w.strip().lower()
清除不需要的空格和换行符的变量。
有效地:
for w in wants:
if w.strip().lower() in i['data']['title'].lower() and i['data']['id'] not in urls:
urls[i['data']['id']] = [[i['data']['title'],i['data']['url']]