Python 类型错误:';在<;字符串>';需要字符串作为左操作数,而不是布尔

Python 类型错误:';在<;字符串>';需要字符串作为左操作数,而不是布尔,python,Python,我正在使用scrapy 1.1。提取实体后,我得到一个字符串,如下所示: bob jones | acme, inc | jeff roberts |company, llc 我想得到所有公司的名单,所以我试着: company_types = ['inc','llc','corp'] entities = str(item.get('entities')).lower entity_list = entities.split('|') company_list= [a in entity_l

我正在使用scrapy 1.1。提取实体后,我得到一个字符串,如下所示:

bob jones | acme, inc | jeff roberts |company, llc
我想得到所有公司的名单,所以我试着:

company_types = ['inc','llc','corp']
entities = str(item.get('entities')).lower
entity_list = entities.split('|')
company_list= [a in entity_list if any(company_types) in a]
我得到:

company_list= [a for a in entity_list if any(company_types) in a]
TypeError: 'in <string>' requires string as left operand, not bool
company\u list=[a表示实体中的列表(如果有)(公司类型)
TypeError:“in”需要字符串作为左操作数,而不是bool

我做错了什么

你不能像那样使用
any
all
。这些函数返回您传递给它们的任何或所有内容是否为真,因此它们返回
true
False
,而不是您可以在
中使用
的一些神奇的东西,您不能像这样使用
任何
所有
。这些函数返回您传递给它们的任何或所有内容是否为真,因此它们返回
true
False
,这不是您可以在
中使用
的神奇功能这里的问题:

company_list = [a for a in entity_list if any(company_types) in a]
请记住,
any()
只是一个必须返回单个值的函数。。。代码将检查单个值是否在
a
中,这不是您想要的

company_list = [a for a in entity_list if any(t in a for t in company_types)]
基本上,括号放错了地方。有点像。

这里的问题是:

company_list = [a for a in entity_list if any(company_types) in a]
请记住,
any()
只是一个必须返回单个值的函数。。。代码将检查单个值是否在
a
中,这不是您想要的

company_list = [a for a in entity_list if any(t in a for t in company_types)]

基本上,括号放错了地方。有点。

我想您正在查找本页上的信息:

尝试更改:

company_list= [a in entity_list if any(company_types) in a]


我想您正在查找本页上的信息:

尝试更改:

company_list= [a in entity_list if any(company_types) in a]

用…回答