noun_gathering_system = [(lemmatizer.lemmatize(word), 1) if tag.pos_tag([word])[0][1] in ["NN", "NNS", "NNP", "NNPS", "FW"] else (lemmatizer.lemmatize(word), 2) if tag.pos_tag([word])[0][1] in ["PRP"] else (lemmatizer.lemmatize(word), 3) if tag.pos_tag([word])[0][1] in ["JJ"] else continue for word in word_tokenize(sentence.lower())]
使用nltk,我试图从一个句子中只收集某些名词和单词。我想按名词-1,代词-2,形容词-3排列我收集的单词的优先顺序。在没有列表理解的情况下编写的代码可以很好地工作,但是在列表理解的情况下,我的代码总是失败,并出现以下错误。你知道吗
File "main.py", line 16
validitychecker = [(lemmatizer.lemmatize(word), 1) if tag.pos_tag([word])[0][1] in ["NN", "NNS", "NNP", "NNPS", "FW"] else (lemmatizer.lemmatize(word), 2) if tag.pos_tag([word])[0][1] in ["PRP"] else (lemmatizer.lemmatize(word), 3) if tag.pos_tag([word])[0][1] in ["JJ"] else pass for word in word_tokenize(sentence.lower())]
^
SyntaxError: invalid syntax
我不知道为什么语法是错误的,任何帮助将是巨大的。你知道吗
在我看来,最好的答案应该是@dfundako,因为当涉及到复杂的if/else时,只编写一个标准循环要容易得多。但是,如果您真的想把它作为一个列表理解,那么这里唯一的错误就是
pass
语句,您可以用None
替换它,如下所示:然后,只需执行
list(filter(None, validitychecker))
即可删除列表中的所有None
。你知道吗希望这有帮助!你知道吗
当然,这里有一个使用列表理解的嗡嗡声。阅读是可怕的,任何人阅读它都会恨你。对于复杂的if/else,编写一个标准循环。你知道吗
相关问题 更多 >
编程相关推荐