天天看點

jmu-Java&Python-統計文字中的單詞數量并按出現次數排序 python代碼現在需要統計若幹段文字(英文)中的單詞數量,并且還需統計每個單詞出現的次數。

現在需要統計若幹段文字(英文)中的單詞數量,并且還需統計每個單詞出現的次數。

注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))