【发布时间】:2018-12-23 06:11:36
【问题描述】:
我正在尝试遍历句子列表,并且只提取列表中包含子字符串(关键字)的项目,当在我的函数中使用 return 而不是 yield 时,我得到一个字符列表 vs yield 我得到完整的句子,但我知道它是一个生成器,并且想要包含该单词的每个句子的完整列表。是 .find() 导致问题还是有更好的方法从字符串项列表中提取?
import nltk
from nltk import *
import pandas as pd
f= open("filename.txt").read()
sent_list = sent_tokenize(f)
hunt = "youth" #keyword i'm searching for
def hunter(sent):
for term in sent:
if term.find(hunt) is not -1:
yield term
complete_lst = [term for term in hunter(sent_list)]
df = pd.DataFrame({'key_term_sentences':complete_lst})
【问题讨论】:
-
如果你只使用return而不是yield,那么你将得到第一个并且只有第一个。一个典型的模式是让
hunter成为一个生成器,然后得到一个列表做list(hunter(sent_list))。 -
另外,如果您不需要索引,请使用
if hunt in term -
@BaileyParker 似乎可以解决问题,我的目标是确保生成器中生成包含子字符串的每个句子