列表中名称的出现次数

时间:2016-08-13 12:24:57

标签: python string list split

这是我的作业:

  

写一个函数,出现次数(字符串,名称),它返回名称字符串字符串中出现的名称数。

     

例如,出现次数('Alojz,Samo,Peter,Alojz,Franci','Alojz')应该返回2.

这是我的解决方案:

def number_of_occurence(string,name):
    m = 0
    l = string.split(',')
    for i in l:
        if i == name:
            m+=1
    return m

这给出了错误的答案,因为它不会检查列表的每个元素。有人可以帮忙找错吗?

2 个答案:

答案 0 :(得分:1)

你可以使用collections.Counter

from collections import Counter
l = (word.strip() for word in string.split(','))
c = Counter(l)
return c[name]

编辑

OR

您可以使用正则表达式:

def count_naem(string, name):
    return len(re.findall("{},".format(name), string+","))

答案 1 :(得分:0)

你可以在分割字符串后剪掉空格。

使用strip()从双方剥离whitespaces。你可以双方whitespaces

这可能会对您有所帮助:

def number_of_occurence(string,name):
    m = 0
    l = string.split(',')
    for i in l:
        if i.strip() == name:
            m+=1
    return m

如果您的字符串中有tabs \tnewline \nescape sequence \r,那么您可以使用strip(' \t\n\r)代替strip()