2015-04-21 1 views
4

Я применяю команду согласования по каждому элементу в списке. Он отлично работает, но когда он не находит соответствия, он печатает No matches. Я хотел бы, чтобы он проигнорировал эти и только распечатывал результаты для матчей.Остановить печать согласования «нет совпадений» в python

absol является переменной, которая содержит список

Вот соответствующая часть сценария:

def get_all_phrases_containing_tar_wrd(target_word, tar_passage, left_margin = 10, right_margin = 10): 
    Ellis = nltk.word_tokenize(tar_passage) 
    text = nltk.Text(Ellis) 
    c = nltk.ConcordanceIndex(text.Ellis, key = lambda s: s.lower()) 
    concordance_txt = ([text.Ellis[map(lambda x: x-5 if (x-left_margin)&gt[0] else 0, [offset])[0]:offset+right_margin] 
        for offset in c.offsets(target_word)]) 
    return [''.join([x+' ' for x in con_sub]) for con_sub in concordance_txt] 

Ellis = nltk.word_tokenize(raw) 
text = nltk.Text(Ellis) 
for t_word in absol: 
    text.concordance(t_word) 
print 
print 'Results from function' 
results = get_all_phrases_containing_tar_wrd(absol, raw) 
for result in results: 
    print result 
+0

У вас есть конкретный вопрос? –

+0

да, я не уверен, как заставить этот скрипт игнорировать элементы, которые он не может сопоставить .. и распечатывать только совпадения. Список очень длинный ... почти 200 предметов и только несколько элементов на самом деле совпадают ... это означает, что я получаю очень длинный список «нет совпадений». –

+0

Так в чем ваш вопрос? –

ответ

1

В вашей программе, у вас есть такие строки:

text = nltk.Text(Ellis) 
for t_word in absol: 
    text.concordance(t_word) 

Вы можете замените эти линии на эти:

ci = nltk.ConcordanceIndex(Ellis) 
for t_word in absol: 
    if ci.offsets(t_word): 
     ci.print_concordance(t_word) 

Дополнительный if заставит сценарий игнорировать элементы, которые он не может сопоставить. Обратите внимание, что вам нужно переключиться с объекта Text на более конкретный объект ConcordanceIndex.

+0

Блестящий, спасибо большое. Работает! –

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