python文件处理练习12

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值