用python实现英文词频统计

需要注意的地方

1.字符串的内置函数的调用一般不改变原字符串,而列表的内置函数的调用一般会改变列表。

trystr = 'mytry'
print(trystr.upper())#MYTRY
print(trystr)#mytry

#要想改变原字符串应该使用如下代码
trystr = trystr.upper()

trylist = [2,6,7,1,0]
print(trylist.sort())#None
print(trylist)#[0, 1, 7, 6, 2]

#注意如下的调用是错误的
trylist = trylist.sort()

2.要想把字典转化为列表注意是想把键、值还是键值对转化为列表。

try_dict = {'a':1, 'b':2, 'c':3}

try_list = list(try_dict.items())
print(try_list)#[('a', 1), ('b', 2), ('c', 3)]

try_list = list(try_dict.keys())
print(try_list)#['a', 'b', 'c']

try_list = list(try_dict.values())
print(try_list)#[1, 2, 3]

3.不确定索引的元素是否存在,用.get

try_dict = {'a':1, 'b':2, 'c':3}
print(try_dict.get('a','无'))#1
print(try_dict.get('d','无'))#无

4.对非简单的列表进行排序,要用到lambda表达式

try_list = [[3,23,4],[11,6,8],[9,7,2]]
#按照第一个元素的大小排序
try_list.sort(key = lambda x:x[0])
print(try_list)
#[[3, 23, 4], [9, 7, 2], [11, 6, 8]]

#按照第二个元素的大小排序
try_list.sort(key = lambda x:x[1])
print(try_list)
#[[11, 6, 8], [9, 7, 2], [3, 23, 4]]

#按照第三个元素的大小排序
try_list.sort(key = lambda x:x[2])
print(try_list)
#[[9, 7, 2], [3, 23, 4], [11, 6, 8]]

实现代码

#封装获得文本的函数
def get_text(file_name):
  with open(file_name,'r') as fr:
    text = fr.read()
    text = text.lower()#注意会有大小写之分,这里不区分大小写
    delete_ch = ['\n',':','!','?',',','.']#要删除的标点
    for ch in delete_ch:
      text = text.replace(ch,' ')
  return text

file_name = 'hamlet.txt'#要处理的文件
text = get_text(file_name)
text = text.split()#注意!不能有split(' ')
count_dict = {}
#统计每个单词的个数
for i in text:
  count_dict[i] = count_dict.get(i,0) + 1
#转化成列表的形式
count_dict = list(count_dict.items())
count_dict.sort(key = lambda x:x[1], reverse = True)

for i in range(10):
  word,count = count_dict[i]
  print(word,count)
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值