按以下要求编写程序 在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。 注1:单词之间以空格(1个或多个空格)为间隔。 注2:忽略空行或者空格行。 要求: 统计前,需要从文字中删除指定标点符号!.,:*?#和0至9的数字。 注意:所谓的删除,就是用1个空格替换掉相应字符。 统计单词时需要忽略单词的大小写。 单词个数为0时。只需显示“0”。 输入格式: 若干行英文,最后以%%%为结束。。 输出格式: 单词数量 出现次数排名前6的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。 输入样例: 在这里给出一组输入。例如: Failure is probably The fortification in your pole! It#is like a1 peek your wallet as the thief when You are thinking how2 to. spend several hard-won lepta. when yoU are? wondering whether new money it#has laid background Because of: yOu5?, then at the6 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 it is !!!!! 输出样例: 在这里给出相应的输出。例如: 52 the=5 is=3 it=3 you=3 and=2 are=2
时间: 2024-03-05 20:51:09 浏览: 135
以下是本人用Python编写的程序:
```python
import re
from collections import Counter
valid_chars = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ')
valid_chars_re = re.compile('[^a-zA-Z ]')
word_count = Counter()
while True:
line = input().strip()
if line == '%%%':
break
if line == '' or not set(line) & valid_chars:
continue
line = valid_chars_re.sub(' ', line).lower()
words = line.split()
word_count.update(words)
total_count = sum(word_count.values())
print(total_count)
for word, count in word_count.most_common(6):
print(word, count)
```
程序的大致思路如下:
1. 定义 valid_chars 变量,包含合法的英文字母和空格。
2. 定义 valid_chars_re 变量,用于匹配文本中需要删除的标点符号和数字。
3. 初始化 word_count 变量,用于存储单词出现的次数。
4. 循环读入输入,直到遇到 '%%%'。
5. 对于每行输入,如果为空行或不包含合法字符,则跳过。
6. 将每行输入中的非法字符替换为空格,并将所有单词转化为小写形式。
7. 使用 split() 函数将一行输入分割成单词,并将单词出现的次数加入 word_count 中。
8. 循环结束后,计算单词总数并输出。
9. 输出出现次数排名前 6 的单词及其出现次数,按照要求排序。
阅读全文