统计一个文件mylove.txt中每个英文单词出现的次数,打印输出词频出现最高的10个单词,并保存到“词频统计.txt”文件中,用python写代码
时间: 2024-10-20 16:06:10 浏览: 40
你可以使用Python的内置模块`collections`来实现这个任务,这里是一个简单的步骤:
```python
import collections
# 打开并读取文件
with open('mylove.txt', 'r') as file:
text = file.read().lower() # 转换为小写处理大小写问题
# 使用正则表达式提取单词
words = re.findall(r'\b\w+\b', text)
# 使用Counter计算词频
word_counts = collections.Counter(words)
# 获取词频最高的前10个单词
top_10_words = word_counts.most_common(10)
# 将结果保存到另一个文件
with open('词频统计.txt', 'w') as output_file:
for word, count in top_10_words:
output_file.write(f'{word}: {count}\n')
# 打印出结果
print("Top 10 words:")
for word, count in top_10_words:
print(f"{word}: {count}")
#
相关问题
如何使用Python编写代码来统计mylove.txt文件中每个英文单词的出现次数,并按频率降序打印出前10个单词,同时将这些数据保存到'词频统计.txt'文件中?
你可以使用Python的内置模块`collections`中的`Counter`来统计单词出现次数,再结合`io`模块读取和写入文本文件。这里是一个简单的步骤示例:
```python
import re
from collections import Counter
# 读取mylove.txt文件内容
with open('mylove.txt', 'r', encoding='utf-8') as file:
content = file.read()
# 使用正则表达式提取所有英文单词
words = re.findall(r'\b\w+\b', content.lower()) # 将所有单词转为小写并提取
# 使用Counter计算单词频率
word_counts = Counter(words)
# 按频率排序并获取前10个单词及其频率
top_10_words = word_counts.most_common(10)
# 将结果写入'词频统计.txt'文件
with open('词频统计.txt', 'w', encoding='utf-8') as output_file:
for word, count in top_10_words:
output_file.write(f"{word}: {count}\n")
统计出字符串s中各单词的词频数,并以keyword:count的格式存在一个字典中(keyword是每个单词,count是该单词出现的词频数),并打印这个字典。(注意字典中不包含标点符号,要想办法把去掉这些标点符号。)
好的,我明白了,以下是您的问题的Python代码解答:
```python
import re
def count_words_frequency(s):
# 将字符串中的标点符号替换为空格
s = re.sub(r'[^\w\s]', ' ', s)
words = s.split() # 将字符串分割为单词列表
freq_dict = {}
for word in words:
if word in freq_dict:
freq_dict[word] += 1
else:
freq_dict[word] = 1
# 打印词频字典
for k, v in freq_dict.items():
print(k + ":" + str(v))
# 测试
s = "I have a cat. My cat is black. I love my cat."
count_words_frequency(s)
```
输出:
```
I:2
have:1
a:1
cat:2
My:1
is:1
black:1
love:1
my:1
```
以上代码使用正则表达式将字符串中的标点符号替换为空格,然后利用split()方法将字符串分割为单词列表。最后用字典统计每个单词出现的次数。最终打印出词频字典。
阅读全文