Python basic程序计算fi中的字母

2024-04-25 10:01:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python为一个在线类编写一个程序,以便找到文件中字母的频率。问题是我在最后的结果中也一直有空格。我怎么能省略它们呢?这是我的密码:

import string
name = raw_input('Enter a file name: ')
fhandle = open(name)
counts = dict()
for line in fhandle:
    line = line.strip()
    line = line.translate(None,string.punctuation)
    line = line.lower()
    letters = list(line)
    for letter in letters:
        counts[letter]=counts.get(letter,0)+1
 lst = list()
    for letter,count in counts.items():
        lst.append((count,letter))
lst.sort(reverse=True)
for count,letter in lst:
    print count,letter

Tags: 文件namein程序forstringcount字母
3条回答

一种优雅的方法是使用isalpha()。 见第11行:

import string
name = raw_input('Enter a file name: ')
fhandle = open(name)
counts = dict()
for line in fhandle:
    line = line.strip()
    line = line.translate(None,string.punctuation)
    line = line.lower()
    letters = list(line)
    for letter in letters:
        if letter.isalpha() == True:
            counts[letter]=counts.get(letter,0)+1
    lst = list()
    for letter,count in counts.items():
        lst.append((count,letter))
lst.sort(reverse=True)
for count,letter in lst:
    print count,letter

如果您不想打印空白的字母(也不想更改代码中的任何其他内容),则可以在最后一个for循环中添加一个If语句:

for count,letter in lst:
    if letter != ' ':
        print count,letter

string.punctuation包含!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~且没有空格字符。你知道吗

您应该将呼叫translate()更改为以下内容:

line.translate(None,string.punctuation+string.whitespace+string.digits)

有关详细信息,请在python解释器中键入help(string)。你知道吗

相关问题 更多 >

    热门问题