我正在运行一个循环,以便在我的列表(名为:text)中附加包含任何(或所有给定标记)的句子,但是问题是,我得到了重复的输出,因为循环在所有标记上逐个运行以进行标识。你知道吗
有没有一种方法,如果在我的句子中有任何标记(3个给定的),句子就会被追加?目前,我得到每个输出3次,因为这个'for'循环中的标签(见“电流输出”),即共4*3=12输出,而不是4。 如果您看到我的“Required Output”,前3个句子就在那里,因为它们包含了其中一个或所有的标记,最后一个显示为“Not found”,因为它不包含任何标记。你知道吗
我的代码:
text=[]
tags=["_NN","_VB","_PRP"]
sentences =['Thanks_NNS sir_VBP','Oh_UH thanks_NNS to_TO remember_VB','Welcome_VB my_UH child_UH',"hi"]
for sentence in sentences:
for tag in tags:
if tag in sentence:
z = sentence.split(",")
k = " ".join(z)
text.append(k)
else:
text.append("Not found")
电流输出:
['Thanks_NNS sir_VBP',
'Thanks_NNS sir_VBP',
'Not found',
'Oh_UH thanks_NNS to_TO remember_VB',
'Oh_UH thanks_NNS to_TO remember_VB',
'Not found',
'Not found',
'Welcome_VB my_UH child_UH',
'Not found',
'Not found',
'Not found',
'Not found']
所需输出:
['Thanks_NNS sir_VBP',
'Oh_UH thanks_NNS to_TO remember_VB',
'Welcome_VB my_UH child_UH',
"Not found"]
您的代码可以通过使用列表理解和^{} 简化为:
如果我正确理解了您的问题,那么您只需要从内部循环中得到一个答案:是否有任何标记匹配。您当前的代码检查每个句子中的每个标记,并分别回答每个标记(doesthistag match)。你知道吗
通过在生成器表达式上使用内置函数
any
,可以获得所需的内容:相关问题 更多 >
编程相关推荐