问题描述:
python计算机二级综合应用,词频统计,以及统计词频所在的句子。
问题解答:
本人写的代码可能有点拙劣,可能不如准确答案简介,仅提供一种思路。
第一问:
#
# 请在此文件作答
#
import jieba
fi=open("data3.txt","r")
lines=fi.readlines()
d={}
for line in lines:
line=jieba.lcut(line)
for i in line:
if len(i)>=2:
d[i]=d.get(i,0)+1
ls=list(d.items())
ls.sort(key= lambda x:x[1],reverse=True)
for i in ls[:10]:
print("{}:{}".format(i[0],i[1]))
fi.close()
第二问:关键点,我觉得先用句号分割,然后再用逗号分割比较好。
#
# 请在此文件作答
#
import jieba
fi=open("data3.txt","r")
fo=open("out.txt","w")
lines=fi.readlines()
d={}
for line in lines:
line=line.strip()
line=jieba.lcut(line)
for i in line:
if len(i)>=2:
d[i]=d.get(i,0)+1
ls=list(d.items())
ls.sort(key= lambda x:x[1],reverse=True)
sss=ls[0][0]
lt=[]
for line in lines:
line=line.strip()
line=line.split("。")
for i in line:
i=i.split(",")
lt.append(i)
for line in lt:
for i in line:
if sss in i:
fo.write(i+"\n")
fi.close()
fo.close()
标准答案的第二问确实简洁一些,如下,他首先把逗号全部替换为句号,然后进行的分割,这样确实好了很多,不会出现列表中的元素仍为列表的情况。
#
# 请在此文件作答
#
import jieba
f = open('data3.txt')
fo = open('out.txt','w')
datas = f.read()
data1 = jieba.lcut(datas)
data2 = datas.replace(',','。')
data2 = data2.split('。')
d = {}
for i in data1:
if len(i) >= 2:
d[i] = d.get(i,0) + 1
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
for j in data2:
if ls[0][0] in j:
fo.write(j.strip('\n')+'\n')
f.close()
fo.close()