所以我正在编写一个程序来搜索职位发布的关键字。我已经有了将整个职位描述变成单个单词列表、删除空格、特殊字符、将所有内容设为小写等的代码。
我想做一些事情,比如“如果这个列表包含 python 就打印一些东西,但如果它有 python 和 VBA 就不要打印它. 这是我所拥有的:
def query_job_posting(url, query_list_include, query_list_exclude):
soup = create_soup(url)
...list formatting functions...
for i in job_description_list:
if any(word in i for word in query_list_include) and not any(exclude in i for exclude in query_list_exclude):
print(url)
job_description 列表 如下所示:
['this',
'is',
'a',
'vba',
'job',
'python']
但似乎没有效果。
如果 query_list_include=['python'] 和 query_list_exclude=[] 则打印 url。
如果 query_list_exclude=['vba'] 和 query_list_include=[] 则 url 不会打印。
但是如果我将 python 保留为包含而将 vba 保留为排除,那么 url 仍然会打印,即使我手动验证了 vba 和python 在job_descripton_list
我哪里错了?
请您参考如下方法:
问题:
您实际上是在列表的每个元素中查找每个单词:
for e in list:
if any(w in e for w in include) and not any(w in e for w in exclude):
print(url)
执行以下操作:
'this' # do nothing
'is' # do nothing
'a' # do nothing
'job' # do nothing
'python' # print url
您可以通过以下方式验证它:
for e in list:
if any(w in e for w in include) and not any(w in e for w in exclude):
print(e, url)
应该打印python <url> . 在这种情况下,列表中包含“VBA”不会有任何改变
解决方案:
根据你的解释你想做的:
url = ...
list = ['this', 'is', 'a', 'job', 'python']
include = ['python']
exclude = ['VBA']
if any(w in list for w in include) and not any(w in list for w in exclude):
print(url)
Out[]: <url>
它评估来自 if 的条件声明:
'python' in list --> True
'VBA' not in list --> True
然后执行print(url)
