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

代码解释

  1. getFilesList(filepath) 函数:

    • 使用 os.listdir(filepath) 获取指定文件夹 filepath 下的所有文件名,并返回一个包含文件名的列表。
  2. 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
  3. list2Dict(wordsList, wordsDict) 函数:

    • 该函数用于将词列表 wordsList 转换为词频字典 wordsDict
    • 具体实现代码需要根据实际需求进行编写。

注意:

  • 代码中需要安装 jieba 库,可以使用 pip install jieba 命令进行安装。
  • 停用词列表 stopwords 需要根据实际情况进行定义。
  • list2Dict() 函数的具体实现需要根据实际需求进行编写。

通过以上代码,可以实现获取指定文件夹下所有文件名,并统计文件夹内所有邮件中词频的功能。用户可以根据自己的需求对代码进行调整和完善。

Python 获取文件夹下所有文件名并统计邮件词频

原文地址: https://www.cveoy.top/t/topic/l4P9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录