猿问

正则表达式 - 计算一个单词在文本中出现的次数

我想要设置的是一个函数,给定某个文本将打印出该单词出现的次数['color', 'Colour', 'Color','Colour']。这样我得到以下结果:


assert colorcount("Color Purple") == 1


assert colorcount("Your colour is better than my colour") == 2


assert colorcount("color Color colour Colour") == 4

我拥有的是


import re


def colorcount(text):


all_matches = re.findall('color', 'Colour', 'Color'. 'Colour', text)


return len(all_matches)


print(colorcount(text)

它不起作用,那么我怎样才能编写代码让它按照我想要的方式工作呢?


幕布斯7119047
浏览 133回答 4
4回答

翻阅古今

如果你想使用正则表达式,你可以这样做:import redef colorcount(text):  r = re.compile(r'\bcolour\b | \bcolor\b', flags = re.I | re.X)  count = len(r.findall(text))  print(count)  return count# These asserts work as expected without raising an AssertionError.assert colorcount("Color Purple") == 1assert colorcount("Your colour is better than my colour") == 2assert colorcount("color Color colour Colour") == 4哪个输出:124

慕侠2389804

使用以下带有标志的正则表达式re.I(不区分大小写),re.findll然后返回返回列表的长度:\bcolou?r\bimport redef colorcount(text):  return len(re.findall(r'\bcolou?r\b', text, flags=re.I))print(colorcount('color Color colour Colour'))印刷:4

梦里花落0921

尝试这个def colorcount(text):    return len(re.findall('[c|C]olou{0,1}r', text))assert colorcount("Color Purple") == 1assert colorcount("Your colour is better than my colour") == 2assert colorcount("color Color colour Colour") == 4

慕婉清6462132

您可以简单地将文本转换为特定大小写(即全部小写),然后使用字符串count()循环每次出现的关键字:def colorcount(text):    KEY_WORDS = [ 'color', 'colour' ]    counter = 0    sanitexed_text = text.lower()    for kw in KEY_WORDS:        counter += sanitexed_text.count(kw.lower())    return countertext = 'color ds das Colour dsafasft e re Color'# 3print(colorcount(text))# All following asserts passassert colorcount("Color Purple") == 1assert colorcount("Your colour is better than my colour") == 2assert colorcount("color Color colour Colour") == 4
随时随地看视频慕课网APP

相关分类

Python
我要回答