Python实现一个文本处理系统,支持功能如下: 1. 接受用户输入的文本(必须>=5句话); 2. 排版文本格式并输出,每一个整句均换行显示; 3. 根据用户需求(用户输入)替换文本中的内容; 4. 根据用户需求(用户输入感兴趣的词),统计并输出词频,且打印该词出现在哪一句的什么位置; 5. 记录用户操作历史,保持文本和具体的操作对应(操作以功能序号记录即可),统计用户操作的文本数,每种功能使用的频率并排序。按词频由大到小降序输出 提示:配合lambda表达式,对存储词频的字典使用sorted函数排序
时间: 2023-12-03 07:47:26 浏览: 53
以下是实现该文本处理系统的Python代码:
```python
import re
from collections import defaultdict
# 记录用户操作历史
history = []
# 统计用户操作的文本数和每种功能使用的频率
statistics = defaultdict(int)
# 接受用户输入的文本
text = input("请输入文本(必须>=5句话):")
while text.count(".") < 4:
text = input("请输入文本(必须>=5句话):")
sentences = re.split(r"[\.\?!]", text)
sentences = [s.strip() for s in sentences if s.strip()]
# 排版文本格式并输出
print("排版后的文本:")
for sentence in sentences:
print(sentence)
# 根据用户需求替换文本中的内容
while True:
choice = input("请选择操作(1.替换文本 2.统计词频 3.退出):")
statistics[choice] += 1
if choice == "1":
old_word = input("请输入要替换的单词或短语:")
new_word = input("请输入新的单词或短语:")
text = text.replace(old_word, new_word)
history.append((choice, old_word, new_word))
sentences = re.split(r"[\.\?!]", text)
sentences = [s.strip() for s in sentences if s.strip()]
print("替换后的文本:")
for sentence in sentences:
print(sentence)
elif choice == "2":
word = input("请输入要统计词频的单词:")
frequency = defaultdict(int)
for i, sentence in enumerate(sentences):
words = sentence.split()
for j, w in enumerate(words):
if w == word:
frequency[(i+1, j+1)] += 1
if frequency:
print(f"“{word}”出现的次数为{sum(frequency.values())},位置如下:")
for pos, count in frequency.items():
print(f"第{pos[0]}句第{pos[1]}个词,出现了{count}次")
else:
print(f"“{word}”未出现在文本中")
elif choice == "3":
break
# 输出用户操作历史和统计信息
print("用户操作历史:")
for h in history:
print(f"功能{h[0]}:将“{h[1]}”替换为“{h[2]}”")
print("统计信息:")
for k, v in sorted(statistics.items(), key=lambda x: x[1], reverse=True):
print(f"功能{k}使用了{v}次")
```
阅读全文