2014-07-20 36 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] 
相關問題