2016-07-05 38 views
0

我有一個腳本做陣列部分匹配變量,但它不工作怎麼辦部分與數組匹配變量在python

import re 

b = "Arun" 
links_check_arr = ['Arun sdsdds',"dsds","arun ijiji"] 
for links_find in links_check_arr: 
    if b in list(links_find): 
     print links_find 
     print b 

上面的腳本不能正常工作

但如果我刪除從列表,如果塊它能正常工作,但它也匹配空值

import re 

b = "Arun" 
links_check_arr = ['Arun sdsdds',"dsds","arun ijiji"] 
for links_find in links_check_arr: 
    if b in links_find: 
     print links_find 
     print b 

輸出:

Arun sdsdds 
Arun 

但是,如果我改變B值清空它也匹配空值

進口重新

b = "" 
links_check_arr = ['Arun sdsdds',"dsds","arun ijiji"] 
for links_find in links_check_arr: 
    if b in links_find: 
     print links_find 
     print b 

輸出:

Arun sdsdds 

dsds 

arun ijiji 

,但我不想與空值

與之匹敵

我想做一個部分匹配的「阿倫」與列表中的元素[「Arun sds DDS」, 「DSDS」, 「阿倫ijiji」]

預期輸出:

input: 

Arun 
Output: 

Arun 

input: 
A 
Output: 
"" -> (null) 

input: 

output: 

我該怎麼辦呢?

+0

爲什麼不在循環中檢查'b'是否爲空? – thefourtheye

+0

'如果列表中的b(links_find)' - 爲什麼要在'links_find'上調用'list'? – user2357112

+0

你的第二個例子有什麼問題?這不是你想要的輸出嗎? – Ulisha

回答

0

以您的第一個例子,我認爲您正在尋找.split()而不是list()

for links_find in links_check_arr: 
    if b in links_find.split(): 
     print links_find 
     print b 

我假設你要尋找的是類似的檢查,如果"Arun"是字符串列表中的一個詞。

解決此問題的一種更簡單的方法是創建一個新列表,其中包含所有包含所需單詞的links_check_arr中的所有元素。您可以通過這樣做:

list_of_words = list(filter(lambda x: b in x.split(), links_check_array))

其中b就是你正在尋找(例如"Arun"),並links_check_arr字是你通過搜索列表。