Python简单词频统计以及格式合并实现

来源:互联网 发布:linux控制台切换 编辑:程序博客网 时间:2024/05/17 14:15

用到的模块: xlrd
运用到:字典dict列表list 读表格,
​最后得到文件: txt

感言: 代码较简单, 实现的方法局限性较大. 希望大家一起指点交流, 谢谢.


词频统计:

有关素材:

材料1

代码如下:
( (相关注释和想法大都写在旁边的备注里了))

import xlrd#定义读取指定列数据的函数, 并返回列表datadef readxls_bycol(path,colnum):    xl = xlrd.open_workbook(path)      table = xl.sheets()[0]    data =list(table.col_values(colnum))      print(data)    return data#定义统计传入列表词频的函数. 并返回已经降序好的字典word_sortdef count_words(data):    word_list = []    word_dict = {}     for i in data :        word_list.extend(i.split('/'))  # i.split('/')表示每个i元素按照/分割,放到单独一个小列表中,  这些i列表的集合用extend追加进word_list    word_set=set(word_list)    for x in word_set:   #set 去重        num =word_list.count(x)  #循环set里的词,在list里边数个数        word_dict[x] = num   #x为dict的key, num 为字典的value    word_sort = sorted(word_dict.items(), key=lambda d: d[1] , reverse = True)  #排序字典,True为降序    #print(word_sort)  #print括号省了会出错...(蠢    return  word_sort #定义将字典写入指定txt文件的函数   def putdata_intotxt(word_sort,path):  #传入已经排序好的字典    i=0    with open(path,'w') as f :        while i<len(word_sort):            f.write(str(word_sort[i][0])+'\t\t'+ str(word_sort[i][1])+'\n')            i+=1  def main():    path_xls ='材料1.xlsx'    path_journal ='期刊词频.txt'    path_keywrds ='关键词词频.txt'    colnum_C=2    colnum_D=3    data_journal= readxls_bycol(path_xls,colnum_D)    sort_jounal = count_words(data_journal)        putdata_intotxt(sort_jounal,path_journal)     #分别调用函数  写好txt    data_keywrds= readxls_bycol(path_xls,colnum_C)    sort_keywrds = count_words(data_keywrds)    putdata_intotxt(sort_keywrds,path_keywrds)if __name__=='__main__':    main()    print('期刊词频&关键词词频都已经统计好啦,快去文件夹查看吧!XP')

运行效果

生成txt


格式合并

用到的模块: xlrd
运用到:字典dict列表list 读表格,
​最后得到文件: txt

材料2

代码如下:
( (相关注释和想法大都写在旁边的备注里了))

import xlrd#读取表格全部数据,返回列表datadef readxls(path,colnum):    xl = xlrd.open_workbook(path)      table = xl.sheets()[0]    data = []    for i in range(0,table.nrows):        data.append(list(table.row_values(i)))     return data#将传入的列表data(二维列表),作者相同的一行"合并"实质用另一个列表mrg来接,返回mrg  def merge_data(data):    i=0    mrg=[]    if len(data)<0:        print('没有获取到表格数据')    for i in range(len(data)):        if i==len(data)-1:            mrg.append(data[i])            break        elif data[i][0] == data[i+1][0]:            data[i+1][2] = data[i][2] + ';'+ data[i+1][2] #将上头的作者copy到下一栏        else:            mrg.append(data[i]) #下一行和此行ID不同就可以把此行存进mrg了       return mrg#将合并好的列表,传入,def putdata_intotxt(data,path):    i=0    with open(path,'w') as f :        while i<len(data):            f.write(data[i][0]+'\t'+ data[i][1]+ '\t' + data[i][2] + '\n')            i+=1  def main():    path_xls='材料2.xlsx'    path_mrg='合并结果.txt'    data_xls = readxls(path_xls,2)    mrg = merge_data(data_xls)    putdata_intotxt(mrg,path_mrg)if __name__ == '__main__':    main()    print('同篇目的作者合并已经做好啦!快打开txt看看吧XP')

生成txt

0 0
原创粉丝点击