python读入英文文本文件统计单词出现的次数,按降序输出次数前10的单词
时间: 2023-11-28 14:13:12 浏览: 80
好的,可以通过Python的字典和正则表达式来实现。以下是代码示例:
```python
import re
# 打开文件并读取内容
with open("file.txt", "r") as file:
text = file.read()
# 使用正则表达式去除标点符号和换行符
text = re.sub(r'[^\w\s]', ' ', text)
text = re.sub(r'\n', ' ', text)
# 将文本分割成单词列表
words = text.split()
# 统计每个单词出现的次数
word_counts = {}
for word in words:
if word not in word_counts:
word_counts[word] = 0
word_counts[word] += 1
# 按照单词出现的次数降序排序并输出前10个单词
sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_word_counts[:10]:
print(f"{word}: {count}")
```
在这个示例中,我们首先打开并读取文本文件。然后使用正则表达式去除标点符号和换行符,并将文本分割成单词列表。接下来,我们使用一个字典来统计每个单词出现的次数。最后,我们按照单词出现的次数降序排序,并输出前10个单词及其出现的次数。
相关问题
、实现对英文文本文件hamlet.txt的读取; 2、实现对英文文本文件的单词抽取; 3、实现对英文文本文件中出现频次最高的前5个单词的抽取,并降序输出;
好的,我会尽力回答你的问题。以下是对你的问题的回答:
1. 实现对英文文本文件hamlet.txt的读取
要读取文件可以使用Python内置的open函数。以下是一个读取文件的示例代码:
```
with open('hamlet.txt', 'r') as f:
text = f.read()
```
这将打开名为“hamlet.txt”的文件并将其读入名为“text”的变量中。请确保在运行代码之前将文件放在正确的位置。
2. 实现对英文文本文件的单词抽取
要从文本中提取单词,最简单的方法是将文本拆分为单词列表。以下是一个示例代码:
```
import re
# 将文本转换为小写,并删除标点符号和数字
text = re.sub(r'[^\w\s]', '', text.lower())
text = re.sub(r'\d+', '', text)
# 将文本拆分为单词列表
words = text.split()
```
此代码将文本转换为小写,并删除所有标点符号和数字。然后,它将文本拆分为单词列表。
3. 实现对英文文本文件中出现频次最高的前5个单词的抽取,并降序输出
要找到出现频次最高的单词,可以使用Python的collections模块中的Counter类。以下是一个示例代码:
```
from collections import Counter
# 计算单词频次
word_count = Counter(words)
# 提取前5个最常见的单词
top_words = word_count.most_common(5)
# 输出结果
for word, count in top_words:
print(word, count)
```
此代码将使用Counter类计算单词频次,并使用most_common方法提取前5个最常见的单词。然后,它会将结果按降序输出。
制定任意英文文章的文本文件,使用pandas统计文章中每个单词出现的次数,保留形如“60”的数字、形如“self- distrust”中间的连字符、形如“isn‘t”中间的撇号,统计结果按照出现次数降序再按照单词字典序排序,将统计结果保存到csv文件中,并使用水平柱状图显示出现次数最多的十个单词
以下是一个示例代码,实现了上述要求:
```python
import pandas as pd
import re
import matplotlib.pyplot as plt
# 读入文本文件
with open('article.txt', 'r') as f:
text = f.read()
# 使用正则表达式分词
words = re.findall(r'\d+|\w+(?:-\w+)*|\w+(?:\'\w+)*', text)
# 统计单词出现次数
word_counts = pd.Series(words).value_counts().sort_values(ascending=False)
# 保存到csv文件
word_counts.to_csv('word_counts.csv', header=['count'])
# 取前十个单词作为水平柱状图的数据
top_words = word_counts.head(10)
plt.barh(top_words.index, top_words.values)
plt.gca().invert_yaxis()
plt.show()
```
需要注意的是,这里使用了正则表达式对文本进行分词,分别匹配了数字、带连字符的单词以及带撇号的单词。统计单词出现次数时,使用了pandas的Series对象,方便进行排序和保存到csv文件。最后,使用matplotlib库绘制水平柱状图展示出现次数最多的前十个单词。
阅读全文