鉴于清单:
my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
我想找到该列表中与'**** ow'匹配的单词('*'是任何字母)。这应该返回'barrow','yellow'和'mellow'(包含在列表中的单词,由六个字母组成,其最后两个字母是'ow')
答案 0 :(得分:1)
解决问题的另一种方法是使用fnmatch,前提是您的干草堆是一个字符串列表。如果不是,您可能必须预先转换为字符串
>>> import fnmatch
>>> my_list = [2345, 3245, 2343, 8746]
>>> fnmatch.filter(map(str, my_list), "2*4*")
['2345', '2343']
>>> my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
>>> fnmatch.filter(map(str, my_list), "*ow")
['barrow', 'yellow', 'mellow']
答案 1 :(得分:0)
试试这个:
>>> new_list = [w for w in my_list if (len(w) == 6 and w[-2:] == 'ow')]
>>> new_list
['barrow', 'yellow', 'mellow']
答案 2 :(得分:0)
[x for x in my_list if x.endswith('ow') and len(x) == 6]
这使用了一个列表推导,它将my_list
的所有元素以'ow'结尾并且长度为6,这正是你想要的。对于更通用的解决方案,您将构建与所需字符串匹配的正则表达式re
,并使用re.match()
作为条件
答案 3 :(得分:0)
您可以使用正则表达式:
>>> import re
>>> my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
>>> [e for e in my_list if re.search(r'....ow', e)]
['barrow', 'yellow', 'mellow']
>>> [e for e in my_list if re.search(r'2\d4\d', str(e))]
[2345, 2343]