我有2个名单:
>>> phrases = ['emp_sal','emp_addr']
>>> cols = ['emp_sal_total','emp_sal_monthly','emp_addr_primary','emp_ssn','emp_phone']
我正在尝试使用列表理解并过滤掉 cols ,以便只选择 cols 中包含短语 emp_sal 的值或 emp_addr 。
所以,输出应该是:
['emp_sal_total','emp_sal_monthly','emp_addr_primary']
这只是复制场景的一个虚拟示例。实际示例包含180个奇数列的 cols 列表。
尝试以下解决方案:
new_cols = [c for c in cols if p for p in phrases in c]
失败了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not list
以下方法产生一个空白列表:
>>> [c for c in cols if p in c for p in phrases]
[]
答案 0 :(得分:5)
您需要测试短语中的任何字符串是否在"&"
中迭代的当前列中。为此,请使用const url = "http://domain/home#id_token=token123&state=staticState";
const params = new URL(url).hash.split("&").shift();
console.log(params);
:
cols
您的方法存在的问题是您在定义之前尝试使用any()
,这会引发[c for c in cols if any(c.startswith(p) for p in phrases)]
:
p
如@Hamms的评论中所述,您仍然可以使用类似于您的方法的内容。您只需要在尝试使用它之前定义NameError
:
>>> [c for c in cols if p in c for p in phrases]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'p' is not defined