在列表中搜索项目时如何使用 any 和 not (python)
How to use any and not when searching for items in a list (python)
所以我正在编写一个程序来搜索职位发布的关键字。我已经有了将整个职位描述变成单个单词列表、删除空格、特殊字符、将所有内容设为小写等的代码。
我想做一些事情,比如“如果这个列表包含 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 list
看起来像这样:
['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
和 [=13] =] 在 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)
所以我正在编写一个程序来搜索职位发布的关键字。我已经有了将整个职位描述变成单个单词列表、删除空格、特殊字符、将所有内容设为小写等的代码。
我想做一些事情,比如“如果这个列表包含 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 list
看起来像这样:
['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
和 [=13] =] 在 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)