python123读取文本文件并排序输出_读取文本文件以按降序打印字母频率python3

这段Python代码旨在读取文本文件,统计字母出现频率,并按降序打印频率及百分比。代码实现了从用户输入的文件名读取内容,去除标点符号、空格和数字,转换为小写,然后计算每个字母的频率。最后,代码按频率排序并打印结果。在输出中增加了频率百分比的显示。
摘要由CSDN通过智能技术生成

我正在做python基本挑战这是其中之一。我所要做的就是通读一个文件,然后按降序打印出字母的频率。我能做到这一点,但我想通过打印出频率百分比和字母-频率-频率%来增强程序。像这样:o - 46 - 10.15%

这就是我目前所做的:def exercise11():

import string

while True:

try:

fname = input('Enter the file name -> ')

fop = open(fname)

break

except:

print('This file does not exists. Please try again!')

continue

counts = {}

for line in fop:

line = line.translate(str.maketrans('', '', string.punctuation))

line = line.translate(str.maketrans('', '', string.whitespace))

line = line.translate(str.maketrans('', '', string.digits))

line = line.lower()

for ltr in line:

if ltr in counts:

counts[ltr] += 1

else:

counts[ltr] = 1

lst = []

countlst = []

freqlst = []

for ltrs, c in counts.items():

lst.append((c, ltrs))

countlst.append(c)

totalcount = sum(countlst)

for ec in countlst:

efreq = (ec/totalcount) * 100

freqlst.append(efreq)

freqlst.sort(reverse=True)

lst.sort(reverse=True)

for ltrs, c, in lst:

print(c, '-', ltrs)

exercise11()

如您所见,我可以计算并排序不同列表上的freq%,但我无法将其与字母freq一起包含在lst[]列表的元组中。有什么方法可以解决这个问题吗?在

如果你对我的代码有任何其他建议的话。请务必提及。

Output Screen

修改

应用@wwii I提到的一个简单的修改就得到了期望的输出。我所要做的就是在迭代lst[]列表时向print语句再添加一个参数。以前,我尝试为freq%,sort创建另一个列表,然后尝试将其插入到列表中的letters count tuple中,但没有成功。在

^{pr2}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值