2014-07-20 35 views
0

进入部分查找使用python表中的单词:给出的名单他们

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

我想找到这个列表,将匹配“****流”(“*”里面的话是任何字母)。这应返回“手推车”,“黄色”和“醇香”(包括在泰德名单的话,由六个字母,其最后两个字母是“嗷嗷”形成)

+0

我会发布一个秒一个答案,但正如一个侧面说明,你应该避免使用'list'作为变量名称,因为它已经是Python中的一种类型了 –

+0

这不是一个代码写入服务;你试过了什么,究竟是什么问题呢? – jonrsharpe

+0

我知道。我一直在研究,我不知道该如何面对它。 – Thon

回答

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'] 
0

试试这个:

>>> new_list = [w for w in my_list if (len(w) == 6 and w[-2:] == 'ow')] 
>>> new_list 
['barrow', 'yellow', 'mellow'] 
0

[x for x in my_list if x.endswith('ow') and len(x) == 6]

这使用一个列表理解,它采用my_list的所有元素,以'ow'结尾,长度为6,这正是您想要的。为了更广泛的解决方案,你将建立一个正则表达式re你想要的字符串相匹配,并使用re.match()为条件

+0

这适用于我发布的示例。在这种情况下它是否也能起作用?:my_list = [2345,3245,2343,8746]。我想找到my_list中的数字[2 * 4 *](2345,2343) – Thon

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] 
相关问题