Python 列表中某个名称出现的次数
这是我的作业: 编写一个函数,返回名称字符串中名称的出现次数(字符串,名称) 例如,出现次数('Alojz,Samo,Peter,Alojz,Franci','Alojz')应该返回2 以下是我的解决方案: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 这给出
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()
,因为您甚至没有尝试修复错误。添加了另一个解决方案。