python文件处理练习12
问题:
苏格拉底是古希腊著名的思想家、哲学家、教育家、公民陪审员。苏格拉底的名言部分被翻译为中文,部分内容分词结果由文件 sgldout.txt 给出。对文件 sgldout.txt 进行分析,输出词频排名前五的词(不包括中文标点符号)和次数到文件sgldstatistics.txt。
参照输出格式如下:
了:234
的:234
有:234
你:234
我:234
资源:
#extend 12
#本题加深对readlines和writelines的理解
#readlines按行读入,生成列表,注:每行行尾包括\n
#用strip去\n
#用plist去标点
#字典随words遍历生成,不另外产生列表
#字典转列表排序,ls是如此形式的列表[(a,b),(c,d)]
#for控制取前5数据,
#format控制输出格式
#writelines可以写入列表或字符串
fi = open("sgldout.txt","r",encoding ="utf-8")
fo = open("sgldstatistics.txt","w",encoding ="utf-8")
words = fi.readlines()
d = {}
plist = ',。 '
for word in words:
word = word.strip('\n')
if word not in plist:
d[word] = d.get(word,0) + 1
fi.close()
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
for i in range(5):
print('{}:{}'.format(ls[i][0],ls[i][1]))
#fo.writelines(ls[i][0] + ':' + str(ls[i][1]) + '\n')
#fo.writelines('{}:{}'.format(ls[i][0],ls[i][1]) + '\n')
fo.write('{}:{}'.format(ls[i][0],ls[i][1]) + '\n')
fo.close()
输出:
的:59
是:18
而:13
我:8
人:6