从键盘读入由仅由英文构成的多行文本,借助于字典统计其中每个单词出现的次数。然后按字典递增序按格式输出每个单次出现的次数。 要求: 1.所有单词不区分大小写,输出时按小写格式输出; 2.需要排除!,: ?等英文符号,即这些符号不应作为单词的公 3.需要排除0,1, 2, ... 9等数字,即这些数字不应作为单词的构成部分。用python
时间: 2024-04-01 16:32:40 浏览: 89
好的,这是一个比较典型的统计单词出现次数的问题,可以按照以下步骤实现:
1. 读入多行文本,可以使用input()或sys.stdin来实现。
2. 将每一行文本按照空格进行分割,得到单个单词。
3. 对于每个单词,需要进行如下处理:
a. 转换为小写字母,可以使用lower()函数。
b. 去除单词中的数字和标点符号,可以使用isalpha()函数和replace()函数。
4. 统计每个单词出现的次数,可以使用字典来实现。
5. 最后按照字典递增序输出每个单词出现的次数。
下面是代码实现:
```python
import sys
import string
word_count = {}
exclude = set(string.punctuation) # 需要排除的标点符号
for line in sys.stdin:
words = line.strip().split() # 分割单词
for word in words:
word = word.lower().replace('_', '').replace('-', '') # 转换为小写字母,并去除特殊字符
word = ''.join(ch for ch in word if ch not in exclude) # 去除标点符号
if word.isalpha(): # 排除数字
word_count[word] = word_count.get(word, 0) + 1 # 统计单词出现次数
for word, count in sorted(word_count.items()): # 按字典递增序输出
print(word, count)
```
注意,如果你想从文件中读入文本,可以使用类似以下的代码:
```python
with open('input.txt', 'r') as f:
for line in f:
words = line.strip().split()
...
```
阅读全文