十二imin 2021-05-02 16:44 采纳率: 50%
浏览 101
已采纳

【python】多封邮件词频统计

函数输入:文件路径(见调用示例)
# 函数输出:该路径下所有文件中单词出现的频率(以字典数据类型进行返回,去除掉长度不大于2的单词)
# 注意:1、在统计单词出现的频率时,所有的单词均应先变成小写。
#       2、在统计单词时,从非字母字符(包括空格)的下一个字符作为单词的字母,直到
#      非字母字符(包括空格)截止。
#       3、数据为整个email文件夹
# 例如: "Increase volume ofEjacu1ate" 分离出来的单词为"increase" ,"volume" , "ofejacu" ,"ate"

邮件内容如下:

--- Codeine 15mg -- 30 for $203.70 -- VISA Only!!! --

-- Codeine (Methylmorphine) is a narcotic (opioid) pain reliever
-- We have 15mg & 30mg pills -- 30/15mg for $203.70 - 60/15mg for $385.80 - 90/15mg for $562.50 -- VISA Only!!! ---

 

Hi Peter,

With Jose out of town, do you want to
meet once in a while to keep things
going and do some interesting stuff?

Let me know
Eugene

 

实际上有50个txt文档,用的是垃圾邮件过滤的数据。

  • 写回答

3条回答 默认 最新

  • 关注
    import re
    import os
    
    def cpf(path):
        dic = {}
        FileNames=os.listdir(path)
        for fn in FileNames:
            if re.search(r'\.txt$',fn):
                fullfilename=os.path.join(path,fn)
                with open(fullfilename,'r',encoding='utf-8') as f:
                    s = f.read()
                    print(s)
    
                    li = re.findall(r'[A-Za-z]{3,}',s)
                    for v in li:
                        v = v.lower()
                        dic[v] = dic.get(v,0)+1
    
        return dic
    
    print(cpf(r'e:/xxx'))
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件