从Python列表中筛选出'None','str'对象不可调用
我的脚本执行LDAP搜索:从Python列表中筛选出'None','str'对象不可调用,python,exception,typeerror,Python,Exception,Typeerror,我的脚本执行LDAP搜索: import ldap ...<initializations> res = conn.search_s(base, scope_level, filter, attrs) _logger.debug("LDAP query result: %s", res) # Filter out the 'None' entries for referrals filter(lambda x: (isinstance(x,tuple) and x[0] is no
import ldap
...<initializations>
res = conn.search_s(base, scope_level, filter, attrs)
_logger.debug("LDAP query result: %s", res)
# Filter out the 'None' entries for referrals
filter(lambda x: (isinstance(x,tuple) and x[0] is not None), res)
如果我在一个单独的脚本中复制列表并运行相同的过滤器,它将按预期工作
用于更换过滤器的构造也可以正常工作:
result = []
for each in res:
if (isinstance(each, tuple) and each[0] is not None):
result.append(each)
但我想调试一下为什么过滤器失败了,正如@101的评论所建议的那样,过滤器关键字也被用作参数名称,这与我观察问题的方法相同 筛选器参数是字符串,因此为TypeError
只需将参数名称更改为ldap_filter即可修复它是否重新分配了filter关键字?啊,很好。让我查一下!!是的,就是这样。该方法正在接受筛选器作为LDAP筛选器参数。最近有人做出了这样的改变:这就是为什么我要求我的同事不要使用vim,而是使用一些pythonide@米塔尔:否则,你可以告诉那个同伴修复他/她的vim,这样它就会显示这些错误:P@101请你们中的一位回答,把这个问题从未回答的问题列表中去掉。
result = []
for each in res:
if (isinstance(each, tuple) and each[0] is not None):
result.append(each)