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

Python if statement failing to match words from array 'in' string

所以我正在玩 reddit API 来监控销售 subreddit,我有这段代码:

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 post 标题,并选择该标题内 [w] 和 [h] 标签之间的所有文本。然后检查 'wants' 列表中定义的任何单词是否出现在标题中,如果是,它会将标题和 reddit link 添加到数组中。

我测试过的一个例子是需求列表中的单词 ergodox,post 标题是 [us-wi] [h] ergodox infinity(带 sip 套接字 mod)[w] paypal。但是 post 没有被添加到数组中,这可能是因为上面的 if(any...) 语句从未被验证为真,但我不明白为什么。

另一个问题一旦解决,有时 [h] 和 [w] 会出现相反的方式,有没有什么捷径可以解决这个问题?还是需要对 if 语句进行 扩展?

提前致谢:)

EDIT 出于对评论的礼貌,尝试简化也没有用:

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

尝试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']]