您的位置:首页 > 编程语言 > Python开发

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

2017-05-02 20:41 627 查看
用到的模块: xlrd

运用到:字典dict列表list 读表格,

​最后得到文件: txt

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

词频统计:

有关素材:



代码如下:

( (相关注释和想法大都写在旁边的备注里了))

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 op
9408
en(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')






格式合并

用到的模块: xlrd

运用到:字典dict列表list 读表格,

​最后得到文件: txt



代码如下:

( (相关注释和想法大都写在旁边的备注里了))

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 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')


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: