程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python中的字母频率大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python中的字母频率?

开发过程中遇到Python中的字母频率的问题如何解决?下面主要结合日常开发的经验,给出你关于Python中的字母频率的解决方法建议,希望对你解决Python中的字母频率有所启发或帮助;

您可以使用翻译者配方来删除所有不在中的字符Alpha。由于这样做使makeletters中除了字符外仅包含其他字符Alpha,因此它n是正确的分母。

然后,您可以使用acollections.defaultdict(int)来计数字母的出现:

import collections
import string

def translator(frm='', to='', delete='', keep=None):
    # Python Cookbook Recipe 1.9
    # Chris Perkins, Raymond Hettinger
    if len(to) == 1: to = to * len(frm)
    trans = string.maketrans(frm, to)
    if keep is not None:
        allchars = string.maketrans('', '')
        # delete is expanded to delete everything except
        # what is mentioned in set(keep)-set(delete)
        delete = allchars.translate(allchars, keep.translate(allchars, delete))
    def translate(s):
        return s.translate(trans, delete)
    return translate

Alpha = 'abcdefghijklmnopqrstuvwxyz'
keep_Alpha=translator(keep=Alpha)

while True:
    speech = raw_input("Enter file name:")
    wholefile = open(speech, 'r+').read()
    lowlet = wholefile.lower()
    letters = keep_Alpha(lowlet)
    n = len(letters)
    occurrences = collections.defaultdict(int)    
    for x in letters:
        occurrences[x]+=1
    for x in occurrences:
        print x, occurrences[x], occurrences[x]/float(n)

解决方法

我需要制作一个程序,输出一个文本文件中字母的频率,并将该频率与python中的另一个频率进行比较。

到目前为止,我可以打印出现字母的次数,但是得到的百分比频率是错误的。我认为这是因为我需要我的程序通过删除所有空格和其他字符来仅计算文件中字母的数量。

def addLetter (x):
    result = ord(x) - ord(a)
    return result


#start of the main program
#prompt user for a file

while True:
    speech = raw_input("Enter file name:")

    wholeFile = open(speech,'r+').read()
    lowlet = wholeFile.lower()
    letters= list(lowlet)
    alpha = list('abcdefghijklmnopqrstuvwxyz')
    n = len(letters)
    f = float(n)
    occurrences = {}
    d = {}


    #number of letters
    for x in alpha:
        occurrences[x] = letters.count(x)
        d[x] =(occurrences[x])/f
    for x in occurrences:
        print x,occurrences[x],d[x]

这是输出

Enter file name:dems.txt
a 993 0.0687863674148
c 350 0.0242449431976
b 174 0.0120532003325
e 1406 0.0973954003879
d 430 0.0297866444999
g 219 0.015170407315
f 212 0.0146855084511
i 754 0.0522305347742
h 594 0.0411471321696
k 81 0.00561097256858
j 12 0.000831255195345
m 273 0.0189110556941
l 442 0.0306178996952
o 885 0.0613050706567
n 810 0.0561097256858
q 9 0.000623441396509
p 215 0.0148933222499
s 672 0.0465502909393
r 637 0.0441257966196
u 305 0.021127736215
t 1175 0.0813937378775
w 334 0.0231366029371
v 104 0.00720421169299
y 212 0.0146855084511
x 13 0.000900526461624
z 6 0.000415627597672
Enter file name:

该程序确实按列打印,但我不确定如何在此处显示。

“ a”的频率应为.0878

大佬总结

以上是大佬教程为你收集整理的Python中的字母频率全部内容,希望文章能够帮你解决Python中的字母频率所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: