2016-07-05 2 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 = "" 
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» со списком элементов в массиве [«Arun sds ДДС», "DSDS", "Арун ijiji"]

Ожидаемый результат:

input: 

Arun 
Output: 

Arun 

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

input: 

output: 

Как я могу это сделать?

+0

Почему вы не проверяете, является ли 'b' пустым, прежде чем идти в циклы? – thefourtheye

+0

'if b in list (links_find)' - почему вы вызываете 'list' на' links_find'? – 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 список вы ищете через.

Смежные вопросы