请编写程序,对一段文本(不带符号),统计其中所有不同单词的个数,以及词频最大的前5个词。 输入格式: 输入给出一段非空文本,可以是中文或者英文,词间空格或分行隔开。 输出格式: 输出词的总数和词频最大的前5个词。注意“不区分英文大小写,例如“PAT”和“pat”被认为是同一个词。 随后按照词频递减的顺序,按照“单词:词频”的格式输出词频最大的前5个词。若有并列,则按递增字典序输出。 输入样例1: 在这里给出一组输入。例如: This is a test so is considered as the same as long But this_8 is different than this 输出样例1: 在这里给出相应的输出。例如: 14 is:3 as:2 this:2 a:1 but:1 输入样例2: 在这里给出一组输入。例如: 双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 金轮法王 小龙女 杨过 乔峰 杨逍 乔峰 慕容复 输出样例2: 在这里给出相应的输出。例如: 17 乔峰:4 慕容复:3 杨逍:3 杨过:2 殷天正:2
时间: 2024-02-27 22:55:08 浏览: 160
编写一个程序,用于统计文件中单词的总数,不同单词的数目。(假设输入文件中只包含字母和空格)
5星 · 资源好评率100%
以下是Python的代码实现:
```python
import re
# 读入文本
text = input()
# 将文本中的非字母数字字符替换为空格,并转换为小写
text = re.sub(r'\W+', ' ', text).lower()
# 将文本划分为单词列表
words = text.split()
# 统计不同单词的个数
word_count = len(set(words))
# 统计每个单词出现的次数
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# 按照词频递减的顺序,按照“单词:词频”的格式输出词频最大的前5个词
top_words = sorted(word_freq.items(), key=lambda x: (-x[1], x[0]))[:5]
for word, freq in top_words:
print('{}:{}'.format(word, freq))
# 输出不同单词的个数
print(word_count)
```
思路解析:
1. 读入文本。
2. 将文本中的非字母数字字符替换为空格,并转换为小写。
3. 将文本划分为单词列表。
4. 统计不同单词的个数。
5. 统计每个单词出现的次数。
6. 按照词频递减的顺序,按照“单词:词频”的格式输出词频最大的前5个词。
7. 输出不同单词的个数。
注意事项:
1. 单词的定义:由字母或数字组成,不含标点符号和空格。
2. 不区分英文大小写:将所有单词都转换为小写进行统计。
3. 使用正则表达式 re.sub(r'\W+', ' ', text) 将文本中的非字母数字字符替换为空格。
4. 使用字典 word_freq 统计每个单词出现的次数。
5. 使用 sorted 函数将字典按照词频递减的顺序排序,并选出前5个词。
6. 输出格式为“单词:词频”的形式。
阅读全文