统计文本中单字母、双字母、三字母的频率

简介: 统计文本中单字母、双字母、三字母的频率

1前言

这篇文章是对网友在文章的下的提问,做出的解答。

2问题描述

如何统计文本中单字母、双字母、三字母的频率,考虑单词之间的空格和符号。

3算法思路

对于统计单字母、双字母、三字母的出现频率:

(1)将文本中单词提取出来(遍历输入的文本,判断当前遍历到的元素是否为字母,若为字母则继续遍历,若不为字母就以此为断点分割出单词)。

注意:在遍历输入的文本时,为保证可以得到所有的单词需要在输入的文本最后加上一个非字母的符号(防止文章最后没有标点符号导致最后一个单词没有被分割出来)。

(2)在遍历输入文本的同时,统计分割出的所有单词数(计算频率时使用),判断该单词是否为单字母、双字母、三字母单词,若是则相应的变量值加1。

(3)在遍历完成后,利用各个变量的值去计算相关类型单词在文本中出现的频率,最后输出即可。




代码清单

统计文本中单字母、双字母、三字母的频率

# 输入文本
str1 = input()
# 和flag和循环中的i组成双指针
flag = 0
# 统计各种单词的数量,用于计算比例
all_word, length1, length2, length3 = 0, 0, 0, 0
# 防止输入文本最后没有标点符号导致最后一个单词没有被算在内
str1 += " "
# 循环分割单词
for i in range(len(str1)):
   # i如果字母就跳过
   if 65 <= ord(str1[i]) <= 90 or 97 <= ord(str1[i]) <= 122:
       continue
   # i不是字母就分割
   else:
       if flag != i:
           a = str1[flag:i]
           all_word += 1
           if len(a) == 1:
               length1 += 1
           elif len(a) == 2:
               length2 += 1
           elif len(a) == 3:
               length3 += 1
       flag = i + 1
print("长度为1单词的比例:", "{:.2f}".format(length1/all_word))
print("长度为2单词的比例:", "{:.2f}".format(length2/all_word))
print("长度为3单词的比例:", "{:.2f}".format(length3/all_word))


目录
相关文章
|
4月前
|
Python
汉字表达的数字
在Python中,将汉字表达的数字转换成阿拉伯数字可以通过编写一个函数来实现,该函数会解析输入的汉字数字字符串,并将其转换为相应的阿拉伯数字。这个过程通常涉及到对汉字数字单位(如一、十、百、千等)的识别和对应的数值计算。
92 5
|
3月前
统计出其中英文字母、空格、数字和其它字符的个数
【6月更文挑战第8天】统计出其中英文字母、空格、数字和其它字符的个数。
29 9
|
3月前
不是,哎呦~~,你怎么还是不会字母大小写的相互转化啊~
不是,哎呦~~,你怎么还是不会字母大小写的相互转化啊~
|
4月前
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。 提示:利用ord()函数来获得字符的 ASCIl。
83 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
|
11月前
【Leetcode -733.图像渲染 -744.寻找比目标字母大的最小字母】
【Leetcode -733.图像渲染 -744.寻找比目标字母大的最小字母】
34 0
|
Python
python字符串切分连接(输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。)
python字符串切分连接(输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。)
1022 0
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
[oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林
[oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林
114 0
[oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林
|
存储 算法
算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词
算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词
|
机器学习/深度学习 CDN
编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按
编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按
358 0