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文件再导入到数据库里面,只能做一个这样折衷的处理。

相关