11月26日
今天做的jieba的分词统计
整体的python代码就是这样,从数据库里读取数据,然后组合成整个的str字符串用jieba进行切割,存在数组里面,然后将list写入一个csv文件
import pymysql import csv import jieba # 连接数据库 db = pymysql.connect(host='localhost', port=3306, user='root', password='root', db='hotw', charset='utf8') cursor = db.cursor() # 测试,打印一下mysql版本 # cursor.execute("select version()") # # data = cursor.fetchone() # # print("Database Version:%s" %data) # 执行查询语句 #教育 科技 房产 财经 军事 汽车 体育 游戏 娱乐 sql = "select content from data where channelName='"+"娱乐"+"'" cursor.execute(sql) result = cursor.fetchall() # 开始打印 print("开始打印") re=list(tuple(result)) str1 = "" i=0; for res in re: #print(res[0]) str1+=str(res[0]); #将垃圾单词去除 r=[] rubbishwords = [line.rstrip() for line in open(r'E:\html模板\rubbish.txt', encoding='UTF-8')]#就是分成一个列表 #以下的三行代码与第十一行代码功能相同 lf=open(r'E:\html模板\rubbish.txt',encoding='UTF-8')#打开寻常中文文件按行输出用UTF-8,用'r','w'不可以 for l in lf: #rstrip() 删除 string 字符串末尾的指定字符(默认为空格). #此处就是将回车和空格都删除 r.append(l.rstrip()) # print(res[5]) # str += res[1] # i = i + 1 # print(res) print(str1) cursor.close() # 开始用jieba统计词频 words = jieba.lcut(str1) counts = {} for word in words: if word in r or len(word)==1 or word ==r'\n': # 排除单个字符的分词结果 continue else: counts[word] = counts.get(word, 0) + 1 # 这里的0表示如果word这个键不在字典中,就添加这个键,并且默认为0,如果加上后面的1,就合理了 items = list(counts.items()) items.sort(key=lambda x:x[1], reverse=True) # 以出现的次数为标准,从大到小 for i in range(100): word, count = items[i] #print("{0:<10}{1:>5}".format(word, count)) with open("E:\\qq\\2021秋软件需求与分析\\娱乐.csv","w",newline="")as datacsv: csvwriter =csv.writer(datacsv,dialect=("excel")) for i in items: csvwriter.writerow(i)
我觉的这个难的是怎么去读取数据,是从数据库里面读取还是从本地文件读取这需要做一个设计,然后读取到的数据取他的什么部分。最后是将数据导出,我本意是想输出到数据库,但是能力有限,不会写,只能输出到csv文件再导入到数据库里面,只能做一个这样折衷的处理。