统计单词数量

作者: MA木易YA | 来源:发表于2018-12-03 22:19 被阅读0次

sort 与 sorted 区别:

  • sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

  • list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

    这里我们对文件夹内文本进行读取并且统计其中出现次数最多的单词作为最重点词汇,将它的计数返回打印出来
    流程

  1. 判断是否为文件夹
  2. 定义一个列表 - 排除一些常用单词以及介词比如and is等等
  3. 这里用到translate和string的一些处理方法,除去所有符号之后去除前后空格形成列表,然后遍历统计即可,在字典中对读到的数据保存并count+1,这两个方法不懂的话可以参考我之前的文章
  4. 除开用os.isfile判断是否为文件外还需要用前文提及的splitext判断后缀是否为txt(自定义)文件
  5. 最后对字典数据进行降序排序,取出第一个数据即可
import os
import string

def count_words(dirpath):
    if not os.path.isdir(dirpath):
        print('please input legal dirpath!')
        return

    exclude_words = ['a', 'an', 'the', 'and', 'or', 'of', 'in', 'at', 'to', 'is','…' ]
    table = str.maketrans("", "", string.punctuation)
    for root, dirs, files in os.walk(dirpath):
        for name in files:
            filename = os.path.join(root, name)
            if not os.path.isfile(filename) or not os.path.splitext(filename)[1] == '.txt':
                print('diary < %s > format is not .txt' % filename)
                return
            f = open(filename, 'r', encoding='utf-8')
            data = f.read()
            words = data.translate(table).split()
            word_dict = dict()

            #这里是单词拼接,单词末尾是’-‘的单词将和下一个单词一起组成新的单词
            n = 0
            for word in words:
                word = word.lower()
                if word[-1] == '-':
                    m = word[:-1]
                    n = 1
                    break
                if n == 1:
                    word = m + word
                    n = 0
                if word in exclude_words:
                    continue
                if word in word_dict:
                    word_dict[word] += 1
                else:
                    word_dict[word] = 1
            f.close()
            word_dict = sorted(word_dict.items(), key=lambda x: x[1], reverse=True)
            print("word_dict", type(word_dict))
            print('The most word in diary < %s > is: %s' % (name, word_dict[0]))

if __name__ == '__main__':
    count_words('diary')


相关文章

  • 统计单词数量

    sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进...

  • 案例一

    需求:1、对文本文件内的每个单词都统计出其出现的次数。2、按照每个单词出现次数的数量,降序排列。分析:(hello...

  • Python一键读取文件中英文单词数量

    一、 序言 今天用Python来试试,对一个文件里面的英文单词数量进行快速统计,告别传统计数方式。 目标文件 我也...

  • Linux下统计相关的命令

    作为编程人员,经常可能有统计代码行数、指定格式的文件数量、单词数量等需求。再Linux操作系统下,有很多命令/工具...

  • MongoDb知识点整理(二)

    分页查询统计数量#统计全部数量db.test.count()#统计特定条件的数量db.test.count({us...

  • 使用Excel公式统计英语单词的数量

    在Word中可以比较快捷地看出一段英文单词的数量,那么,在Excel中有没有比较快速的方法来统计呢?下面我们来看一...

  • 统计数量

    终于解套。 有口诀,底部放量要跟,跟错也要跟,很对。但是如何跟,在什么位置去跟? 这次在操作苏利有了经验,从放量再...

  • 单词统计

    有一个文本文件,被分成了4份,分别放到了4台服务器中存储 Text1:the weather is goodTex...

  • Go语言基础练习一

    一、字符统计 1、判读字符串汉字的数量 2、how do you do 单词出现的次数 二、回文判断 字符串从左往...

  • Java 多线程——统计文件中各单词数量

    问题描述 Word Count 是一个著名的练手程序。一个文本文件包含若干行,每行包含若干个只包含小写字母的单词,...

网友评论

    本文标题:统计单词数量

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