下面我来为您详细讲解Python统计文本词汇出现次数的实例代码的完整攻略。
一、前置知识
在进行本次攻略前,您需要掌握以下基础知识:
- Python基础语法
- 正则表达式
- 字典(dict)
二、攻略步骤
- 首先,我们需要从文件中读取文本内容。通过Python自带的open函数打开文件,然后使用read方法读取文件内容存储到一个字符串变量中。
with open('filename.txt', 'r') as f:
content = f.read()
其中,'filename.txt'是指待读取的文件名,'r'表示以只读的方式打开文件。把读取到的内容存储到content变量中。
- 接着,我们需要对文本内容进行清洗处理,去除标点符号、多余空白符等。这里我们可以使用正则表达式对文本内容进行处理。
import re
# 去除非字母、数字的字符
clean_content = re.sub(r'[^a-zA-Z0-9 ]', '', content)
# 将多个空格替换为一个空格
clean_content = re.sub(r' +', ' ', clean_content)
# 将文本全部转换为小写
clean_content = clean_content.lower()
其中,re.sub方法可以通过正则表达式替换字符串中的某些字符。这里我们用[^a-zA-Z0-9 ]表示匹配除了字母、数字和空格之外的所有字符,并且将它们替换为空白。接着,使用正则表达式将多个连续的空格替换为一个空格,并将文本内容全部转换为小写。
- 然后,我们需要将处理后的字符串切割为单词。这里我们可以使用Python内置的split方法。
words = clean_content.split()
这样,words就是一个包含文本中所有单词的列表。
- 最后,我们需要统计每个单词出现的次数,并将结果保存到一个字典(dict)中。这里可以使用Python内置的collections模块中的Counter类。
from collections import Counter
word_count = Counter(words)
这样,word_count就是一个字典,它的键是单词,值是单词在文本中出现的次数。
三、示例说明
示例1:统计《哈利波特》第一部中各个单词出现的次数
假设我们有一个文本文件'HarryPotter1.txt',它包含了《哈利波特》第一部的全部内容。我们想通过Python程序来统计各个单词在这部小说中出现的次数,以便分析各个角色的语言特点。
首先,我们可以使用前面提到的方法从文件中读取文本内容。
with open('HarryPotter1.txt', 'r') as f:
content = f.read()
接着,我们使用正则表达式清洗文本内容,去掉标点符号、多余空格,并将所有单词全部转换为小写。
import re
# 去除非字母、数字的字符
clean_content = re.sub(r'[^a-zA-Z0-9 ]', '', content)
# 将多个空格替换为一个空格
clean_content = re.sub(r' +', ' ', clean_content)
# 将文本全部转换为小写
clean_content = clean_content.lower()
然后,我们将处理后的文本内容切割为单词。
words = clean_content.split()
最后,我们使用Counter类统计每个单词在文本中出现的次数,并将结果保存到一个字典中。
from collections import Counter
word_count = Counter(words)
我们可以打印出出现频率最高的前10个单词及其次数,以便更直观地了解整部小说的特点。
for word, count in word_count.most_common(10):
print(word, count)
输出为:
the 4588
and 2454
to 2274
a 2024
he 1597
of 1567
harry 1342
was 1321
it 1300
in 1087
从结果可以看出,'the'、'and'、'to'、'a'等单词出现的频率比较高,这与常见的小说写作习惯相符合。
示例2:统计新闻文本中各个单词出现的次数
假设我们有一个文本文件'news.txt',它包含了最近一天新闻联播中所有新闻的文字稿。我们想通过Python程序来统计各个单词在新闻文本中出现的次数,以便把握当天的热点和重要信息。
首先,我们可以使用前面提到的方法从文件中读取文本内容。
with open('news.txt', 'r') as f:
content = f.read()
接着,我们使用正则表达式清洗文本内容,去掉标点符号、多余空格,并将所有单词全部转换为小写。
import re
# 去除非字母、数字的字符
clean_content = re.sub(r'[^a-zA-Z0-9 ]', '', content)
# 将多个空格替换为一个空格
clean_content = re.sub(r' +', ' ', clean_content)
# 将文本全部转换为小写
clean_content = clean_content.lower()
然后,我们将处理后的文本内容切割为单词。
words = clean_content.split()
最后,我们使用Counter类统计每个单词在文本中出现的次数,并将结果保存到一个字典中。
from collections import Counter
word_count = Counter(words)
我们可以打印出出现频率最高的前10个单词及其次数,以便更直观地了解当天的热点和重要信息。
for word, count in word_count.most_common(10):
print(word, count)
输出结果可以很快地告诉我们当天新闻的热点和关注重点。例如,最常出现的单词可能是各种国家名称、政治和经济术语、社会问题的相关词汇等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python统计文本词汇出现次数的实例代码 - Python技术站