python结巴分词 词频统计_一个txt文档,已经用结巴分词分完词,怎么用python工具对这个分完词的文档进行计算统计词频,求脚本,非...

匿名用户

1级

2016-11-03 回答

#!/usr/bin/env python3

#-*- coding:utf-8 -*-

import os,random

#假设要读取文件名为aa,位于当前路径

filename='aa.txt'

dirname=os.getcwd()

f_n=os.path.join(dirname,filename)

#注释掉的程序段,用于测试脚本,它生成20行数据,每行有1-20随机个数字,每个数字随机1-20

'''

test=''

for i in range(20):

for j in range(random.randint(1,20)):

test+=str(random.randint(1,20))+' '

test+='\n'

with open(f_n,'w') as wf:

wf.write(test)

'''

with open(f_n) as f:

s=f.readlines()

#将每一行数据去掉首尾的空格和换行符,然后用空格分割,再组成一维列表

words=[]

for line in s:

words.extend(line.strip().split(' '))

#格式化要输出的每行数据,首尾各占8位,中间占18位

def geshi(a,b,c):

return alignment(str(a))+alignment(str(b),18)+alignment(str(c))+'\n'

#中英文混合对齐 ,参考http://bbs.fishc.com/thread-67465-1-1.html ,二楼

#汉字与字母 格式化占位 format对齐出错 对不齐 汉字对齐数字 汉字对齐字母 中文对齐英文

#alignment函数用于英汉混合对齐、汉字英文对齐、汉英对齐、中英对齐

def alignment(str1, space=8, align = 'left'):

length = len(str1.encode('gb2312'))

space = space - length if space >=length else 0

if align in ['left','l','L','Left','LEFT']:

str1 = str1 + ' ' * space

elif align in ['right','r','R','Right','RIGHT']:

str1 = ' '* space +str1

elif align in ['center','c','C','Center','CENTER','centre']:

str1 = ' ' * (space //2) +str1 + ' '* (space - space // 2)

return str1

w_s=geshi('序号','词','频率')

#由(词,频率)元组构成列表,先按频率降序排序,再按词升序排序,多级排序,一组升,一组降,高级sorted

wordcount=sorted([(w,words.count(w)) for w in set(words)],key=lambda l:(-l[1],l[0]))

#要输出的数据,每一行由:序号(占8位)词(占20位)频率(占8位)+'\n'构成,序号=List.index(element)+1

for (w,c) in wordcount:

w_s+=geshi(wordcount.index((w,c))+1,w,c)

#将统计结果写入文件ar.txt中

writefile='ar.txt'

w_n=os.path.join(dirname,writefile)

with open(w_n,'w') as wf:

wf.write(w_s)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值