Python 获取文件夹下所有文件名并统计邮件词频
Python 获取文件夹下所有文件名并统计邮件词频
本文介绍了使用 Python 获取指定文件夹下所有文件名,并统计文件夹内所有邮件中词频的方法。代码使用 os.listdir() 函数获取文件名,使用 jieba 库进行分词,并过滤停用词。
代码示例
import os
import re
import jieba
# 获取文件夹下所有文件名
def getFilesList(filepath):
return os.listdir(filepath)
# 统计某文件夹下所有邮件的词频
def wordsCount(filepath, stopwords, wordsDict=None):
if wordsDict is None:
wordsDict = {}
wordsList = []
filenames = getFilesList(filepath)
for filename in filenames:
with open(os.path.join(filepath, filename), 'rb') as f:
for line in f.readlines():
# 过滤非中文字符
pattern = re.compile('[\u4e00-\u9fa5]')
line = pattern.sub("", line.decode('utf-8', errors='ignore'))
words_jieba = list(jieba.cut(line))
for word in words_jieba:
if word not in stopwords and word.strip() != '' and word != None:
wordsList.append(word)
wordsDict = list2Dict(wordsList, wordsDict)
return wordsDict
# 将词列表转换为词频字典 (假设已定义)
def list2Dict(wordsList, wordsDict):
# ... 代码实现 ...
return wordsDict
代码解释
-
getFilesList(filepath)函数:- 使用
os.listdir(filepath)获取指定文件夹filepath下的所有文件名,并返回一个包含文件名的列表。
- 使用
-
wordsCount(filepath, stopwords, wordsDict=None)函数:filepath: 要统计词频的文件夹路径。stopwords: 停用词列表,用于过滤无意义的词语。wordsDict: 词频字典,用于存储词语及其出现次数,默认为 None。- 初始化: 如果
wordsDict为 None,则初始化一个空字典{}。 - 获取文件名: 使用
getFilesList(filepath)获取文件夹下的所有文件名,并存储在filenames列表中。 - 遍历文件: 循环遍历
filenames列表中的每个文件名。 - 读取文件内容: 打开每个文件,并逐行读取内容。
- 过滤非中文字符: 使用正则表达式
[\u4e00-\u9fa5]过滤掉非中文字符,将它们替换为空字符串。 - 分词: 使用
jieba.cut(line)对每行内容进行分词,并将结果存储在words_jieba列表中。 - 过滤停用词: 遍历
words_jieba列表,判断每个词是否在stopwords列表中、是否为空字符串,以及是否为 None。如果满足条件,则将该词添加到wordsList列表中。 - 统计词频: 调用
list2Dict(wordsList, wordsDict)函数将wordsList转换为词频字典,并将结果赋值给wordsDict。 - 返回词频字典: 返回统计好的词频字典
wordsDict。
-
list2Dict(wordsList, wordsDict)函数:- 该函数用于将词列表
wordsList转换为词频字典wordsDict。 - 具体实现代码需要根据实际需求进行编写。
- 该函数用于将词列表
注意:
- 代码中需要安装
jieba库,可以使用pip install jieba命令进行安装。 - 停用词列表
stopwords需要根据实际情况进行定义。 list2Dict()函数的具体实现需要根据实际需求进行编写。
通过以上代码,可以实现获取指定文件夹下所有文件名,并统计文件夹内所有邮件中词频的功能。用户可以根据自己的需求对代码进行调整和完善。
原文地址: https://www.cveoy.top/t/topic/l4P9 著作权归作者所有。请勿转载和采集!