㈠ python统计字符串中单词数量
使用比较基本的方法写的参考代码:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#python2.7
importre
printu'请输入字符串:'
wz=raw_input()
s=wz.lower()
#小写单词的正则表达式
r='[a-z]+'
#找到所有单词
ws=re.findall(r,s)
#定义一个字典来存储单词和次数
dt={}
forwinws:
dt[w]=dt.setdefault(w,0)+1
#wd来存储单词集合,可能有几个,比如2个单词,都出现30次
wd=[]
#max用来存储单词出现的最多的次数
max=0
forword,timesindt.items():
iftimes>max:
wd=[]
wd.append(word)
max=times
eliftimes==max:
wd.append(word)
printu'有%s个单词,出现频率最高:'%len(wd)
forxinwd:
print"%s %s"%(x,max)
测试
请输入字符串:
!!!
有2个单词,出现频率最高:
a2
good2
以下方法应该是最优了,关注高人的解答。。
1、先过滤不参与统计的符号,如单引号,逗号等
2、通过split分段函数将字符串以空格为界限分割,并将分割出来的每个单词保存到数组中
3、使用最优排序算法将单词进行排序
4、声明两个变量str和n,分别用于记录当前单词和出现次数
5、开始遍历,由于已经经过了排序,所以相同的单词一定是排在一起的,因此,如果下一个单词和当前相同就将计数加一,否则就和n比较,较大的保留在变量中。
6、遍历完毕,保留在变量中的,就是频率就高的单词!