检查字符串列表A中的任何项是否是字符串列表B中某项的子字符串

2024-04-26 06:13:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试整理一组火柴和一组字符串,如果我有

matchers = ['foo', 'bar', 'abc']

以及

strings = ['afooa', 'zbarz', 'abcabc', 'purple', 'foobar']

我希望能够得到strings的任何元素,其中{}的任何元素都是一个子串,这样

results = ['afooa', 'zbarz', 'abcabc', 'foobar'],理想情况下不需要求助于嵌套for循环。在

我已经找了一段时间了,但这是一个很难用可搜索的术语来界定的问题,所以即使是在搜索方面的任何建议,任何人都将不胜感激。在


Tags: 字符串元素foobar整理foobarabcpurple
2条回答
results = [s for s in strings if any(m in s for m in matchers)]

说明:如果来自matchers的任何元素包含strings元素,我们将遍历strings并添加元素。

如果不想编写循环代码,可以使用regular expression(RegEx):

>>> import re

>>> regex = re.compile('|'.join(matchers))

这将创建一个RegExfoo|bar|abc,它将匹配其中任何一个。

我们可以使用regex的search方法和filter

^{pr2}$

^{}返回^{},如果没有匹配项,None。所以我们过滤掉匹配的字符串(匹配是什么并不重要)

如果我们使用^{},它将从字符串开头开始匹配:

>>> list(filter(pattern.match, strings))
['abcabc', 'foobar']

相关问题 更多 >

    热门问题