现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。 注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 most lax alert and most low awareness and left it godsend failed !!!!! 输出样例1 46 the=4 it=3 you=3 and=2 are=2 is=2 most=2 of=2 when=2 your=2
时间: 2024-03-23 12:36:39 浏览: 392
输入样例中的英文文本中包含多个空格,需要使用正则表达式或者字符串分割函数进行处理。同时需要注意将文本中的标点符号替换为空格,并将单词转换为小写形式后再进行统计。
基本版代码示例:
```python
import re
from collections import defaultdict
# 初始化单词计数器
word_count = defaultdict(int)
# 读取输入文本,直到遇到结尾标记
while True:
line = input().strip()
if line == "!!!!!":
break
# 将标点符号替换为空格,分割出单词并统计数量
line = re.sub(r'[!.,:*?。]', ' ', line)
words = line.split()
for word in words:
word_count[word] += 1
# 输出单词数量
print(len(word_count))
# 输出出现次数排名前10的单词及出现次数
top10 = sorted(word_count.items(), key=lambda x: (-x[1], x[0]))[:10]
for word, count in top10:
print(word, count)
```
进阶版代码示例:
```python
import re
from collections import defaultdict
# 初始化单词计数器
word_count = defaultdict(int)
# 读取输入文本,直到遇到结尾标记
while True:
line = input().strip()
if line == "!!!!!":
break
# 将标点符号替换为空格,分割出单词并统计数量
line = re.sub(r'[!.,:*?。]', ' ', line)
words = line.split()
for word in words:
word = word.lower()
word_count[word] += 1
# 输出单词数量
print(len(word_count))
# 输出出现次数排名前10的单词及出现次数
top10 = sorted(word_count.items(), key=lambda x: (-x[1], x[0]))[:10]
for word, count in top10:
print(word, count)
```
注意,在进阶版代码中需要将单词转换为小写形式后再进行统计。
阅读全文