python入门小程序: 英文词频统计

#文本词频统计
def getText():
	txt = open("E:\python学习\python_work\hamlet.txt","r").read()
	txt = txt.lower()
	for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':  #通过for循环,依次取出!等特殊字符赋值给ch
		txt = txt.replace(ch," ")                  #取出特殊字符后,将txt中!全部替换成空格后,再通过for循环依次将剩余的特殊字符全部替换
	return txt

hamletTxt = getText()
words = hamletTxt.split()   #以“空格”为分隔符
counts = {}    #初始一个”空字典“,因为单词和次数要形成映射,所以需要把words列表,改成“字典“,方便映射统计
for word in words:
	counts[word] = counts.get(word,0)+1

#word字典类型,counts.get(word,0),表示如果word存在返回键值,如果word不存在,返回0
'''刚开始字典counts是空的,所以words列表里面的任何字符,都不在counts字典里,因此第一次索引到的字符,都是不存在,为0+1,
例如a首次遇到,则为a:1,当首次添加字符到字典后,第二次再遇到相同字符时,值1+1=2,为a:2,并将2赋值给counts[a]'''

items = list (counts.items())  #counts.item(),转换成[(a,2),(b,1),.....],的元组类型,list将元组类型转换成列表类型
items.sort(key=lambda x:x[1],reverse=True)  #lambda定义x,及需要排列的元素,x[1],代表对元组第二个元素进行排列
for i in range(10):
	word, count = items[i]
	print("{0:<10}{1:>5}".format(word, count))
#0和1表示位置,0对应word,1对应count
#<表示左对齐,>表示右对齐,数字表示宽度。同理,题中<10表示左对齐,并占10个位置,>5表示右对齐,占5个位置。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京城徐董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值