您的位置:首页 > 编程语言 > Python开发

jmu-Java&Python-统计文字中的单词数量并按出现次数排序 python代码

2020-03-01 03:00 1476 查看

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。

基本版:

统计时,区分字母大小写,且不删除指定标点符号。

进阶版:

统计前,需要从文字中删除指定标点符号!.,: *?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
统计单词时需要忽略单词的大小写。
输入说明
若干行英文,最后以!!!为结束。

输出说明
单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。

输入样例1

Failure is probably The fortification in your pole!

It is like a peek your wallet as the thief when You
are thinking how to. spend several hard-won lepta.

when yoU are? wondering whether new money it has laid
background Because of: yOu?, then at the heart of the
Tom say: Who is the best? No one dare to say yes.
most lax alert and! most low awareness and* left it

godsend failed
!!!!!

输出

54
the=5
is=3
it=3
you=3
and=2
are=2
most=2
of=2
say=2
to=2

代码

# -*- coding: utf-8 -*-
"""
Created on Thu Jan  9 00:58:57 2020

@author: chen
"""
words=""
while True:
a=input()
if a=="!!!!!":
break
words=words+" "+a
words=words.lower()
words=words.replace('!',' ').replace(',',' ').replace('.',' ').replace(':',' ').replace('*',' ').replace('?',' ')
words=words.split()
s={}
for i in words:
if i in s:
s[i]+=1
else:
s[i]=1
s=list(s.items())
s.sort(reverse=False,key=lambda x:x[0])
s.sort(reverse=True,key=lambda x:x[1])

print(len(s))
if len(s)<10:
for i in range(len(s)):
word,count=s[i]
print(word+"="+str(count))
else:
for i in range(10):
word,count=s[i]
print(word+"="+str(count))
  • 点赞
  • 收藏
  • 分享
  • 文章举报
ZAchiever 发布了1 篇原创文章 · 获赞 0 · 访问量 31 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐