<pre><code>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())]
</code></pre>
<p>使用nltk,我试图从一个句子中只收集某些名词和单词。我想按名词-1,代词-2,形容词-3排列我收集的单词的优先顺序。在没有列表理解的情况下编写的代码可以很好地工作,但是在列表理解的情况下,我的代码总是失败,并出现以下错误。你知道吗</p>
<pre><code> 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
</code></pre>
<p>我不知道为什么语法是错误的,任何帮助将是巨大的。你知道吗</p>
<p>当然,这里有一个使用列表理解的嗡嗡声。阅读是可怕的,任何人阅读它都会恨你。对于复杂的if/else,编写一个标准循环。你知道吗</p>
<pre><code>['Fizzbuzz' if x%3==0 and x%5==0 else 'Fizz' if x%3==0 else 'Buzz' if x%5==0 else x for x in range(1,101)]
</code></pre>