就一题, 词频统计,主要纠结了以下地方:
1.当没有找到#也要把这一行的字符串存起来
2.字符串长度>15的时候只取前15个字符
3.多条件排序算法sorted(d.items(),key=lambda d:(-d[1],d[0]))
4.还有如果不是合法字符,如果非法字符存在多个的时候index也要移动,还有最后结尾的判断。
new=[]
while(True):
s=input()
s=s.lower()
if '#' in s:
new.append(s[:s.find('#')])
break
else:
new.append(s)
d={}
for s in new:
index=0
for j in range(0,len(s)):
if (not s[j].isalnum()) and s[j]!='_' :
if index!=j:
if j-index>15:
d[s[index:index+15]]=d.get(s[index:index+15],0)+1
else:
d[s[index:j]]=d.get(s[index:j],0)+1
index=j+1
else:
if j==len(s)-1:
if j+1-index>15:
d[s[index:index+15]]=d.get(s[index:index+15],0)+1
else:
d[s[index:j+1]]=d.get(s[index:j+1],0)+1
num=int(len(d)*0.1)
print(len(d))
l=sorted(d.items(),key=lambda d:(-d[1],d[0]))
i=0
for i in range(0,num):
result=str(l[i][1])+':'+str(l[i][0])
print(result)
来源:CSDN
作者:就是一只白
链接:https://blog.csdn.net/XinemaChen/article/details/103704522