Python 练习册--单词统计

# 题目

任一个英文的纯文本文件,统计其中的单词出现的个数。


# 分析

单词主要是以空格分开,当然我们还得考虑"-""'"换行

  1. 去除中文字符
  2. 去除除-'外的字符
  3. 处理-'字符,多个-就不能算单词了
  4. 统计单词频率

# 实现

这里我直接用Markdown英文文档测试了

Show the code:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2015-03-11 14:08:36
# @Author  : Linsir (vi5i0n@hotmail.com)
# @Link    : https://linsir.org

import re

def get_word_frequencies(file_name):
    dic = {}
    txt = open(file_name, 'r').read().splitlines()
    # print txt
    for line in txt:
        line = re.sub(r'[^\\u4e00-\\u94a5\\w\\d\\-]', ' ', line)
        line = re.sub(r"[^a-zA-Z'-]|\\\\s+|\\t|\\r", ' ', line)
        line = re.sub(r"-{2,}", ' ', line)
        line = re.sub(r"'{2,}", ' ', line)
        for word in line.split():
            dic.setdefault(word.lower(), 0)
            dic[word.lower()] += 1
    li= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True)
    # print dic
    for i in li:
        print i 
    
if __name__ == '__main__':
    get_word_frequencies('syntax.text')

# 结果

    ('a', 138)
    ('the', 132)
    ('to', 104)
    ('is', 84)
    ('you', 82)
    ('markdown', 81)
    ('this', 69)
    ('of', 66)
    ('code', 61)
    ('in', 53)
    .....


参考链接:

  1. Sorted Word frequency count using python
  2. 某百度知道

--EOF--


>看不到评论?GFW!!!