基于Python的文本统计

给定任意的文本文件,统计文件中的文字信息。

#wordstats.py
#包含所有要保留的字符集
keep={'a','b','c','d','e',
      'f','g','h','i','j',
      'k','l','m','n','o',
      'p','q','r','s','t',
      'u','v','w','x','y',
      'z',' ','-',"'"}

def normalize(s):
    """
    将字符串转化成标准字符
    """
    result=' '
    for c in s.lower():
        if c in keep:
            result += c
    return result

def make_freq_dict(s):
    """
    返回每个单词的频率数
    """
    s=normalize(s)
    words=s.split()
    d={}
    for w in words:
        if w in d: #如果W出现过,就将其出现的次数加1
            d[w] += 1
        else:
            d[w] = 1 #如果w是第一次出现,就将其出现次数设置为1
    return d

def print_file_stats(fname):
    """
    打印统计信息
    """
    s=open(fname,'r').read()
    num_chars=len(s)  #规范化S之前计算字符数
    num_lines=s.count('\n') #在规范化s之前计算行数

    d=make_freq_dict(s)
    num_words=sum(d[w] for w in d)  #计算s包含多少单词

    #创建一个列表,其中的元素为单词及其出现次数的元组,并根据单词出现的次数由高到低排列
    lst=[(d[w],w) for w in d]
    lst.sort()  #排序
    lst.reverse()  #反转

    #屏幕上打印信息
    print("The file '%s' has: "%fname)
    print("  %s characters" %num_chars)
    print("  %s lines" %num_lines)
    print("  %s words" %num_words)

    print("\nThe top 10 most frequent words are:")
    i=1  #循环变量
    for count,word in lst[:10]:
        print('%2s. %4s %s' %(i,count,word))
        i += 1

def main():
    print_file_stats('D:\\Python3.4\\82208.txt')

if __name__ == '__main__':
    main()

执行结果:


注:读取之前应该确保文件是可读的,并且解除文件的保护属性。否则读取会异常。


参考文献:

Toby Donaldson著,袁国忠译.Python 编程入门(第三版).人民邮电出版社.2013.12

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值