我试图检查string
在var1
中至少包含五个characters
。我正在使用count
但它没有像我预期的那样工作。同时,var2
它包含来自var1
的five characters
多个。
var1 = "today news report"
var2 = "news report"
if var2.count(var1) >= 5:
print("yes")
else:
print("nooooooo")
欢迎您的建议来实现这一点。
>str.count
正在搜索var2
中var1
a的完全匹配项。相反,您可以使用集合,并查看交集的长度是否大于阈值:
var1 = "today news report"
var2 = "news report"
if len(set(var1) & set(var2)) >= 5:
print("yes")
else:
print("nooooooo")
# yes
如果你想查看var2
是否包含5个或更多在var1
中找到的相同字符,你可以使用Python的set
结构,它有一个set.intersection()
方法。intersection()
方法将传递的内容转换为 anoter 集,并返回两者之间相同的元素。
var1 = "today news report"
var2 = "news report"
if len(set(var1).intersection(var2)) >= 5:
print("Yes")
else:
print("No")
# Yes
您可以看到set
为您提供了var1
中的所有唯一字符,而intersection
仅为您提供共享的角色。
print(set(var1))
# {'d', ' ', 'w', 'n', 't', 's', 'r', 'y', 'o', 'a', 'e', 'p'}
print(set(var1).intersection(var2))
# {'r', 'n', 'p', 's', 'e', 'o', 'w', ' ', 't'}
&
运算符也可用于获取交集,因此set(var1).intersection(var2)
等效于set(var1) & set(var2)
。
如果你想使用count:
var1 = "today news report"
var2 = "news report"
count = 0
for letter in set(var1):
if letter != ' ': # Check if space
count += (list(set(var2))).count(letter)
print("yes") if count >= 5 else print ("nooo")
#if count >= 5:
# print ("yes")
#else:
# print ("nooo")
#count = 8