我的代码:
result = 0
for line_A in text_A:
for line_B in text_B:
if line_A in line_B:
result += 1
break
return result / len(text_A)
非常简单:如果line_A
中存在来自text_A
的{{1}},请计算并检查另一个。我想知道我是否遗漏了一些实用工具,或者这种方法是否100%正确? TIA
答案 0 :(得分:4)
您可以将两个文本转换为集合并使用交集,就像这样
len(set(text_A) & set(text_B)) / len(text_A)
但问题是,如果有重复的文字,那么它只会被计算一次。所以,你可能想要使用
sum(line_A in text_B for line_A in text_A) / len(text_A)
但如果line_A
可以位于line_B
中的任何位置,那么您拥有的内容是正确的,并且可以像这样简洁地书写
sum(any(line_A in line_B for line_B in text_B) for line_A in text_A)/len(text_A)
答案 1 :(得分:0)
如果我理解你的问题是正确的,这可能会有所帮助:
from collections import Counter
>>> text_a = 'some text'
>>> a = Counter(text_a.split())
>>> text_b = 'other text'
>>> b = Counter(text_b.split())
>>> a & b
Counter({'text': 1})