【问题标题】:Returning unmatched substrings返回不匹配的子字符串
【发布时间】:2021-12-06 11:08:33
【问题描述】:

我想将地址列表 (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'

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。
  • 对不起博特先生。这是我正在使用的整个代码。我还应该发布输出吗?

标签: substring matching


【解决方案1】:

我将通过正则表达式搜索和提取组来解决第一个任务。然后第二个只是减少到从可用地址列表中减去找到的地址。

>>> 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'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2021-07-15
    相关资源
    最近更新 更多