在 python 中停止索引打印 'no matches'
Stop concordance printing 'no matches' in python
我正在对列表中的每一项应用索引命令。它工作正常,但是当它找不到匹配项时,它会打印出 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)>[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
在你的程序中,你有这些行:
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
对象。
我正在对列表中的每一项应用索引命令。它工作正常,但是当它找不到匹配项时,它会打印出 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)>[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
在你的程序中,你有这些行:
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
对象。