Python 列表中某个名称出现的次数

Python 列表中某个名称出现的次数,python,string,list,split,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 这给出

这是我的作业:

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

例如,出现次数('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

这给出了错误的答案,因为它没有检查列表中的每个元素。有人能帮你找出错误吗?

你可以使用集合。计数器

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

您可以使用正则表达式:

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

如果您将输入字符串从
('Alojz,Samo,Peter,Alojz,Franci','Alojz')
更改为
('Alojz,Samo,Peter,Alojz,Franci','Alojz')
,则它会工作

您需要从输入字符串中删除额外的空格

替换字符串中的空白

    def number_of_occurrences(string,name):
    m = 0
    string = string.replace(" ", "")
    l = string.split(',')
    for i in l:

        if i == name:           
            m+=1
    return m

您可以在分割字符串后删除空白

使用
strip()。两边都可以有
空格

这可能会帮助您:

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

如果字符串中有
tabs\t
newline\n
escape sequence\r
,则可以使用
strip('\t\n\r)
,而不是
strip()
,因为您甚至没有尝试修复错误。添加了另一个解决方案。