通过输入部分内容,使用python在列表中查找单词

时间:2014-07-20 17:21:28

标签: python list find

鉴于清单:

my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']

我想找到该列表中与'**** ow'匹配的单词('*'是任何字母)。这应该返回'barrow','yellow'和'mellow'(包含在列表中的单词,由六个字母组成,其最后两个字母是'ow')

4 个答案:

答案 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]