8月13日

获取到所有的新闻热点之后,需要从中分析处人们词汇

我的的想法是先把这些新闻放在一个txt文件中,在读取这个文件对内容进行拆分

写入文件的代码:

file= open('E:\html模板\hot.txt','w')
for item in items:
file.write(item+"\n")
file.close()

读取文件的代码:

f=open('E:\html模板\hot.txt','r')
suoyou=f.read()
这样读取的是整个txt的字符串,而不是一行一行的


想要读文件一行一行可以用这个

fopen = open('C:\\Users\\hp\\Desktop\\final_hotword2.txt', 'r',encoding='utf-8')

lines = fopen.readlines()

 

注意方式必须是utf-8

 

****通过jieba这个库来将字符串分成一个一个词语,jieba.cut生成的是一个生成器,generator,也就是可以通过for循环来取里面的每一个词

jieba.lcut 直接生成的就是一个list

words=jieba.cut(suoyou)

 

需要一个不重要词语的比对文件,创建一个不重要的词汇的列表

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

通过条件判断并对词汇计数,通过导入counter包,来做操作计数

from collections import Counter
c = Counter() #通过这个计数类来记录单词出现个数
for word in words:
if word not in r and len(word)>1 and word !=r'\n':
#counts[word] = counts.get(word, 0) + 1
# #没出现一次次数加一
c[word]+=1

 

 

 

学习时间:13:34到16:43


 

 








posted @ 2021-08-13 16:50  不咬牙  阅读(48)  评论(0编辑  收藏  举报