如何使用spaCy提取句子中指定位置的NN并赋值给变量?
解决spaCy提取指定位置NN并赋值变量的问题
没问题,我来帮你调整代码实现需求。核心思路是先把所有符合条件的NN收集到一个列表里,再根据索引提取你需要的第1个和第3个(注意Python是0索引,所以第1个对应索引0,第3个对应索引2),之后就能把它们赋值给变量啦。
修改后的完整代码
import spacy frase1 = input('> \n\n') nlp = spacy.load('en') # 收集所有NN到列表中 nn_list = [t.text for t in nlp(frase1) if t.tag_ == 'NN'] # 提取并赋值变量(先判断列表长度是否足够,避免索引错误) if len(nn_list) >= 3: first_nn = nn_list[0] third_nn = nn_list[2] print(f"第1个NN: {first_nn}") print(f"第3个NN: {third_nn}") else: print(f"输入句子中只有{len(nn_list)}个NN,不足3个,请调整输入内容")
代码说明
- 用列表推导式
nn_list = [t.text for t in nlp(frase1) if t.tag_ == 'NN']一次性筛选出所有NN并存储,比原来的循环打印更便于后续处理。 - 增加了长度判断,防止用户输入的句子中NN数量不足3个时出现
IndexError,让代码更健壮。 - 提取后直接赋值给
first_nn和third_nn变量,你可以根据需求直接使用这两个变量做后续操作。
用你的示例句子"the cat is better than a dog and a wolf"测试的话,输出会是:
第1个NN: cat 第3个NN: wolf
内容的提问来源于stack exchange,提问作者John_appleseed
相关产品推荐
相关产品推荐

