循环查找字符串python中的特定字符

时间:2018-07-21 21:57:02

标签: python string function loops

我陷入了一个家庭作业问题,我需要编写一个函数,该函数接受一个参数,并且如果字符串中恰好有3个7,则返回True。如果少于三个或大于三个'7',则该函数应返回False。

def lucky_seven(a_string):
    if "7" in a_string:
       return True 
    else:
       return False

 print(lucky_seven("happy777bday"))
 print(lucky_seven("happy77bday"))
 print(lucky_seven("h7app7ybd7ay"))      

结果应为True,False,True。我要在只有一个7的字符串中工作。欣赏是否有人可以指出我正确的方向。

4 个答案:

答案 0 :(得分:3)

您可以使用str.count:

  

str.count(sub [,start [,end]])

     

返回子字符串sub中不重叠出现的次数   范围[开始,结束]。可选参数start和end为   解释为切片符号。

def lucky_seven(a_string):
    if a_string.count("7") == 3:
       return True 
    else:
       return False

print(lucky_seven("happy777bday"))
print(lucky_seven("happy77bday"))
print(lucky_seven("h7app7ybd7ay"))  

答案 1 :(得分:1)

您可以轻松使用regexp来做到这一点:-

import re

def lucky_seven(text):
    return len(re.findall("7", text)) is 3

print(lucky_seven("happy777bday"))
print(lucky_seven("happy77bday"))
print(lucky_seven("h7app7ybd7ay"))

答案 2 :(得分:0)

如果在id1 id2 col1 col2 col3 ------------------------------------------------------- 9 1 foo 1 2018 bar 1 9 2 foo 2 2018 <null> 9 3 foo 3 2018 bar 2 中有任何 "7" in a_string,则

7为True;要检查一定数量的a_string,可以将7a_string的每个字符进行比较,并计算它们匹配的次数。您也可以使用正则表达式来做到这一点。

答案 3 :(得分:0)

您可以创建自己的计数器,例如-

def lucky_seven(a_string):
    count = 0
    for s in a_string:
        if s == "7":
            count += 1
    return True if count == 3 else False

或者您可以使用python的collections模块,该模块将返回一个元素在列表中出现多少次的决定。由于字符串只不过是列表,因此它将起作用-

import collections
def lucky_seven(a_string):
    return True if collections.Counter("happy777bday")["7"] == 3 else False

或字符串计数器-

def lucky_seven(a_string):
    return True if str.count(a_string, "7") == 3 else False

甚至甚至不需要列表理解解决方案-

def lucky_seven(a_string):
    return True if len([i for i in a_string if i == "7"]) == 3 else False