以下是我搜索并计算 pos_xist 命名列表的代码,该列表包含en.wiktionary.org的已爬网元素。该列表包含了wikitionary可能的Part of Speech标签(也有一些不是pos的标签),我搜索该列表只计算列表中有多少。 如何以更简洁的方式缩短下面的代码?
count = 0
for i in range(0,10): #assumed maximum count of possible POS is 10
try:
if 'Noun' in pos_xist[i]:
count +=1
elif 'Verb' in pos_xist[i]:
count +=1
elif 'Pronoun' in pos_xist[i]:
count +=1
elif 'Adjective' in pos_xist[i]:
count +=1
elif '' in pos_xist[i]:
count +=1
elif 'Pronoun' in pos_xist[i]:
count +=1
elif 'Adverb' in pos_xist[i]:
count +=1
elif 'Particle' in pos_xist[i]:
count +=1
elif 'Conjunction' in pos_xist[i]:
count +=1
elif 'Interjection' in pos_xist[i]:
count +=1
elif 'Prepoisition' in pos_xist[i]:
count +=1
elif 'Determiner' in pos_xist[i]:
count +=1
elif 'Article' in pos_xist[i]:
count +=1
else:
pass
except:
pass
答案 0 :(得分:1)
您可以创建要搜索的单词列表,并使用生成器表达式迭代pos_xist
中的每个项目:
words = ['Noun', 'Verb', 'Pronoun']
count = sum(any(word in item for word in words) for item in pos_xist)
如果要限制前十项,请使用切片pos_xist[:10]
。
不需要处理异常。
答案 1 :(得分:0)
postaglist=['Noun','Verb'...]
for item in pos_xist:
if item in postaglist:
count=count+1
形成所有可能的pos标签的列表并在其中搜索。
答案 2 :(得分:0)
您可以使用any
builtin加上每个项目的列表,而不是等到错误被抛出。
它看起来像这样
count = 0
words = ["Noun", "Verb", "Pronoun", ...]
for pos in pos_xist:
if any(word in pos for word in words):
count += 1