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

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

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


词频统计:

有关素材:

Python简单词频统计以及格式合并实现_第1张图片

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

import xlrd
#定义读取指定列数据的函数, 并返回列表data
def readxls_bycol(path,colnum):
    xl = xlrd.open_workbook(path)  
    table = xl.sheets()[0]
    data =list(table.col_values(colnum))  
    print(data)
    return data


#定义统计传入列表词频的函数. 并返回已经降序好的字典word_sort
def 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 i0])+'\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')

Python简单词频统计以及格式合并实现_第2张图片

Python简单词频统计以及格式合并实现_第3张图片


格式合并

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

Python简单词频统计以及格式合并实现_第4张图片

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

import xlrd

#读取表格全部数据,返回列表data
def 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 i0]+'\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')

Python简单词频统计以及格式合并实现_第5张图片

你可能感兴趣的:(Python学习)