在列表中找到匹配字符串的“ x”个示例

时间:2019-05-10 19:13:52

标签: python python-3.x

我试图找到在长列表中找到x个字符串示例的最佳方法:

List = [123xyz, 456xyz, 678xyz, 123abc, 123ok, 123yes, 456abc, 456ok, noyes, yesno, yes123]

我想找到所有带有'123'*的对或所有*'abc'的对,但要找到最小对的'x'

example '123'* x=3 : 123xyz, 123abc, 123ok
example *'abc' x =2 : 123abc, 456abc

有人有想法或代码示例可以在列表中找到它吗?

1 个答案:

答案 0 :(得分:0)

您的示例表明您正在寻找最多x个匹配项(而不是最少)。

如果您只想匹配前缀和后缀,则可以使用startswith()和endswith()函数。

为了将结果限制为特定数目的匹配,您可以简单地使用范围索引

例如:

# match "123*" x=3
result = [ s for s in List if s.startswith("123") ][:3]  

# match "*abc" x=2
result = [ s for s in List if s.endswith("abc") ][:2]