停止一致性打印'没有匹配'在python中

时间:2015-04-21 16:51:28

标签: python python-2.7 nltk

我在列表中的每个项目上应用了一个concordance命令。它工作正常,但是当找不到匹配时,它会打印出No matches。我希望它忽略这些,只打印匹配的结果。

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

1 个答案:

答案 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对象。