import string sent = input().strip() for c in string.punctuation: sent = sent.replace(c," ") #1去除标点符号 wordlist = sent.split() #分词 wordcounts = {} wordlens =[] for word in wordlist: wordcounts[word] = wordcounts.get(word,0) + 1 #2词频统计 for word in wordcounts.keys(): wordlens.append((word,len(word))) #计算每个单词长度 sort_wordcounts = sorted(wordcounts,key = lambda x:x[1],reverse =True) #3按照词频排序 sort_wordlens = sorted(wordlens,key = lambda x:x[1],reverse=True) #4按照单词长度排序 maxlen = len(sort_wordlens[0]) #5最长单词的长度 for wlen in sort_wordlens: #6输出所有最长单词 if wlen == maxlen: print("maxlen:{1:<3}word:{0:>10}".format(word,wlen)) else: print() #7 for word, count in sort_wordcounts: #输出单词词频 print("{0:<10}{1:->5}".format(word,count)) #8
时间: 2023-12-27 10:04:10 浏览: 136
详解Python中string模块除去Str还剩下什么
这段代码的功能是输入一段文本,去除标点符号并进行分词,统计每个单词出现的次数,按照单词出现的次数和单词长度进行排序,输出最长的单词和每个单词的出现次数。具体的代码实现如下:
1. 使用 for 循环遍历 string.punctuation 中的标点符号,使用 replace 方法将标点符号替换为空格。
2. 使用字典 wordcounts 统计每个单词出现的次数,如果字典中已经存在该单词,则将其出现次数加 1。
3. 使用 sorted 函数按照单词出现的次数进行排序,将排序后的结果存储在 sort_wordcounts 中。
4. 使用 sorted 函数按照单词长度进行排序,将排序后的结果存储在 sort_wordlens 中。
5. 计算最长单词的长度,将其存储在 maxlen 变量中。
6. 遍历 sort_wordlens 中的每个单词,如果其长度等于最长单词的长度,则输出该单词。
7. 遍历 sort_wordcounts 中的每个单词,输出单词和出现次数。
8. 程序运行结束。
阅读全文