現在需要統計若幹段文字(英文)中的單詞數量,并且還需統計每個單詞出現的次數。
注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))