在Python中检查字符串是否至少包含五个字符。

4

我正在尝试检查var1中是否包含至少五个字符。我使用了count函数,但它的实际效果与我的期望不符。与此同时,var2中包含了var1中五个以上的字符

var1 = "today news report"
var2 = "news report"


if var2.count(var1)  >=  5:
    print("yes")
else:
    print("nooooooo")

欢迎您提出建议,以实现此目标。


你认为var2.count(var1)是做什么的?它返回什么值?这能帮助你理解正在发生的事情吗? - Chris
1
var2 = 'nnnnn'时,预期的输出是什么?虽然var2中只有一个唯一字符,但它出现了5次...这算是是/否的情况吗? - Jon Clements
在这种情况下,预期结果会是什么?我的意思是,您期望从计数中得到什么结果? - yatu
3个回答

5

str.count 用于查找 var1var2 中的精确匹配。相反,您可以使用集合(set),并查看交集的长度是否大于阈值:

var1 = "today news report"
var2 = "news report"

if len(set(var1) & set(var2)) >=  5:
    print("yes")
else:
    print("nooooooo")
# yes

这是否也包括空格?(不应该吧?) - Rebin
很难从问题中判断。空格是一个字符。 - Tomalak
1
也许是这样,@Rebin。但是这只是一个去除不需要字符的问题,即 len((set(var1) & set(var2)) - {' '})。从问题中确实很难判断。 - yatu
即使使用 set() 也只是猜测。原帖并未指定是否计算重复。 - Tomalak
是的,我同意@Tomalak。我刚刚选择了这个答案,但再次检查后不确定哪个是所需的解决方案,我想我会等待一些来自OP的反馈。 - yatu

2
如果你想查看var2是否包含var1中5个或更多个相同字符,你可以使用Python的set结构,它具有set.intersection()方法。 intersection()方法将传递的内容转换为另一个集合,并返回两者之间相同的元素。"Original Answer"的意思是"最初的回答"。
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)


给楼主的一点提示:set(var1) & set(var2)set(var1).intersection(var2) 的语法糖,在底层它们是完全相同的东西。 - Tomalak
1
我刚学到了一些东西!而且 set(var1) | set(var2) 可以给你并集! - Cohan
而“-”表示差异。 :) - Tomalak

0

如果你想使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接