第2.1题:Python统计日记最重要的词

题目来自:Python 练习册题目2.1: 你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。

查看更多于本人博客:iii.run

参考代码

#coding: utf-8
import re, os
from collections import Counter

# 目标文件所在目录
PATH = 'D:'

def getCounter(source):
    #输入一个英文的纯文本文件,统计其中的单词出现的个数
    with open(source) as f:
        data = f.read()
    data = data.lower()#字母全部小写
    datalist = re.split(r'[\s]+', data)#根据空白字符,将data进行划分
    return Counter(datalist)


def run(PATH):
    # 切换到目标文件所在目录
    os.chdir(PATH)
    # 遍历该目录下的txt文件
    total_counter = Counter() # 生成Counter()对象
    for i in os.listdir(os.getcwd()):
        if os.path.splitext(i)[1] == '.txt':#分离扩展名
            total_counter += getCounter(i)# 多个Counter()叠加
    return total_counter.most_common()#Counter对象转化为list格式

if __name__ == '__main__':
    dic = run(PATH)
    for i  in range(len(dic)):
        print('%15s  ---->   %3s' % (dic[i][0],dic[i][1]))

出现的错误

编码问题

UnicodeDecodeError: 'gbk' codec can't decode byte...
两种解决方法:

  • decode('utf-8')重新编码一下
fp = open(filename,'rb')

content = fp.read().decode('utf-8')
  • open方法指定参数encoding='UTF-8':
 content= open('filename', mode='rb', encoding='UTF-8')

但是得注意一下,原文到底是不是UTF-8编码。反正Python编码这里是个大坑,多加小心。

文件名、目录名或卷标语法不正确

Path里边的斜杠是 / 不是
PATH = 'E:/Python/pydata-book-master/ch02'

AttributeError: 'list' object has no attribute '…

看看那个object到底是什么,print(type(name)) ,然后再查查其对应的函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,839评论 0 5
  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 12,879评论 0 13
  • 引言 在这里我假设你已经看完了一篇Python教程,基本熟悉了Python的结构和语法,在命令行下的Python互...
    Programmer客栈阅读 65,155评论 0 17
  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 8,455评论 1 5
  • 以前那姑娘说她喜欢雨天,其实我也比较喜欢,小雨淋漓,带着几分慵懒,晚晚的起床,随手翻着几本闲书,听雨,观景,别有一...
    百纳枕阅读 3,237评论 0 2