首页 > 解决方案 > Python说它在不包含关键字的字符串中找到了关键字

问题描述

web1web2web3是我从中抓取的三个不同的网站。我想看看它们是否包含或company1的名称。这以前工作得很好,但目前不工作。像这样回报所有的公司。当我打印 web1、web2 和 web3 时,我可以看到它们不包含任何公司名称。这是代码:company2company3Print(matches)['company1', 'company2', 'company3']

companies = [ 'company1', 'company2', 'company3' ]

matches = [ x for x in companies if x in web1 or web2 or web3 ]

print(matches)

当我当时只将匹配项更改为一个来源时,它显示没有找到公司名称。当我尝试同时在多个来源中搜索公司名称时,就会出现问题。感谢所有帮助。

标签: pythonpython-3.x

解决方案


您的语法略有偏差,但不幸的是它仍然是有效的 Python。您打算使用的逻辑是这样的:

matches = [ x for x in companies if x in web1 or x in web2 or x in web3 ]

也就是说,您要检查给定公司是否位于三个网站地址中的任何一个中。正如您所写,所有公司都将永远通过,因为web2并将web3永远评估为真。

试试这个更正的版本:

companies = [ 'company1', 'company2', 'company3' ]

web1 = 'http://www.company1.com'
web2 = 'http://www.company1.com'
web3 = 'http://www.company1.com'
matches = [ x for x in companies if x in web1 or x in web2 or x in web3 ]

print(matches)

这仅打印:

['company1']

请注意,我有意将所有三个网站地址设置为仅匹配第一家公司,以表明只有这家公司被打印。


推荐阅读