美文网首页Python教程/练习题
第2.1题:Python统计日记最重要的词

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

作者: mmmwhy | 来源:发表于2017-02-17 17:06 被阅读336次

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

    查看更多于本人博客:李飞阳


    参考代码

    #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)) ,然后再查查其对应的函数。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/pqakwttx.html