主页 > 知识库 > 利用Python3实现统计大量单词中各字母出现的次数和频率的方法

利用Python3实现统计大量单词中各字母出现的次数和频率的方法

热门标签:北京外呼电销机器人招商 郑州智能外呼系统中心 电销机器人 金伦通信 宾馆能在百度地图标注吗 crm电销机器人 汕头电商外呼系统供应商 南京crm外呼系统排名 400电话 申请 条件 云南地图标注

首先以只读方式打开单词文件,利用列表推导式创建两个列表
列表sta记录各单词出现的次数,列表freq记录各单词出现的频率

f = open('5500词.txt','r',encoding='utf-8')
sta = [0 for i in range(26)]
freq = [0 for i in range(26)]

单词格式如下所示:
a [ei] art.一(个);每一(个);(同类事物中)任一个
abandon [ə'bændən] vt.离弃,丢弃;遗弃,抛弃;放弃
abdomen [æb'dəumen] n.腹,下腹(胸部到腿部的部分)
abatement [ə'beitmənt] n.减(免)税,打折扣,冲销
abide [ə'baid] vi.(abode,abided)(by)遵守;坚持;vt.忍受,容忍

每行一个单词,所以我们选择按行读取文件

for i in range(5500):
  buf = f.readline()

然后依次统计每个字符串中的字母个数,注意大写字母也要统计(后面的字母省略)

for j in buf:
    if j == 'a' or j == 'A':
      sta[0] = sta[0] + 1
    elif j == 'b' or j == 'B':
      sta[1] = sta[1] + 1

注意到每个单词后都有音标,所以遇到 中括号" [ "时停止计数

if j == '[':
      break

然后每五个一行,依次输出各个单词出现的次数,将print函数中的end参数由默认换行改成几个空格,使输出更格式化。字母利用ASCII码输出

print('5498个词汇中,各字母出现的次数分别为:\n')
asc = 97
for i in range(26):
  if i  25:
    print("%c" % asc,':',sta[i],end='  ')
    if (i + 1) % 5 == 0:
      print('\n')
  else:
    print("%c" % asc,':',sta[i])
  asc = asc + 1

利用一个for遍历计算出所有字母数量的总和

sum = 0
for i in sta:
  sum = sum + i

利用一个for遍历计算出各字母出现的频率,注意到Python中计算出的频率会自动保留17位小数,为了方便查看,使用round()函数保留四位小数,值得注意的是,使用round()函数会自动去掉数字末尾的0

for i in range(26):
  freq[i] = round(sta[i] / sum,4)

再以每五个一行,依次输出各个单词出现的频率,将print函数中的end参数由默认换行改成几个空格,使输出更格式化。字母利用ASCII码输出。

print('各字母出现的频率分别为:\n')
for i in range(26):
  if i  25:
    print("%c" % asc,':',freq[i],end='  ')
    if (i + 1) % 5 == 0:
      print('\n')
  else:
    print("%c" % asc,':',freq[i])
  asc = asc + 1

最后输出的结果如下图所示:


上概率论的课时,偶然看见居然有人拿着词典去数字母的数量,就想能不能写一个自动统计的程序,于是就随便写着玩。代码功底很差,所以写得很丑(居然有25个elif),所以看个乐呵就好了。

总的来说,我觉得有这些可以改进的地方:
①读取单词的方法可以改进,这种一行一行读取的方式,对格式要求很高,很难找到
②用字典来存储频数和频率是否会更好?后面输出的时候可以避免使用ASCII码,但是字典推导式我属实记不清了
③判断计数的这些if和elif能否抽象出一个方法?增加代码复用
④round()函数会自动去掉小数后面的0,有没有什么方法使0被保留下来?这样输出的格式会更好看

我的代码的优点估计只有一点了:
①Python初学者就能看懂

到此这篇关于利用Python3实现统计大量单词中各字母出现的次数和频率的方法的文章就介绍到这了,更多相关Python3字母出现次数和频率内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Python 统计数据集标签的类别及数目操作
  • Python统计可散列的对象之容器Counter详解
  • Python 统计列表中重复元素的个数并返回其索引值的实现方法
  • Python实战之单词打卡统计
  • python之cur.fetchall与cur.fetchone提取数据并统计处理操作
  • python自动统计zabbix系统监控覆盖率的示例代码
  • python 统计代码耗时的几种方法分享
  • Python统计列表元素出现次数的方法示例
  • python统计RGB图片某像素的个数案例
  • Python jieba 中文分词与词频统计的操作
  • 使用Python 统计文件夹内所有pdf页数的小工具
  • python 统计list中各个元素出现的次数的几种方法
  • python调用百度AI接口实现人流量统计
  • Python代码覆盖率统计工具coverage.py用法详解
  • python 爬虫基本使用——统计杭电oj题目正确率并排序
  • 利用python汇总统计多张Excel
  • python统计mysql数据量变化并调用接口告警的示例代码
  • 用python实现监控视频人数统计

标签:石家庄 西宁 文山 锡林郭勒盟 昆明 梅州 浙江 怀化

巨人网络通讯声明:本文标题《利用Python3实现统计大量单词中各字母出现的次数和频率的方法》,本文关键词  利用,Python3,实现,统计,大量,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《利用Python3实现统计大量单词中各字母出现的次数和频率的方法》相关的同类信息!
  • 本页收集关于利用Python3实现统计大量单词中各字母出现的次数和频率的方法的相关信息资讯供网民参考!
  • 推荐文章