我想比较地址列表(B
)和包含地址(A
)的人员列表。代码重写这些值,以便打印包含不相关信息的A。
我如何修改它,以便它打印匹配的B
值?
或者,更好的是:是否有可能得到任何A
中不包含的B
值的输出?
A = ["<hi>", "12you","good"]
B = ["hi", "you", "good", "luck"]
C = [x for x in A if any(b in x for b in B)]
print(C)
期望输出:'hi', 'you', 'good'
更多期望输出:'luck'
我将通过正则表达式搜索和提取组来解决第一个任务。第二种方法则简化为从可用地址列表中减去找到的地址。
>>> addresses = re.compile("|".join(f"({b})" for b in B))
>>> addresses.pattern
'(hi)|(you)|(good)|(luck)'
>>> [m.group(0) for a in A if (m := addresses.search(a))]
['hi', 'you', 'good']
>>> set(B).difference([m.group(0) for a in A if (m := addresses.search(a))])
{'luck'}