Python if语句无法匹配数组'in'字符串中的单词

时间:2016-07-19 18:44:00

标签: python python-2.7 reddit

所以我正在使用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']]

1 个答案:

答案 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']]