忽略除英语以外的所有其他价值'字

时间:2018-03-15 03:41:45

标签: python

编写一个名为letter_count(filename)的函数,该函数接受包含文件名的单个参数。您的函数应该读取文本文件的内容,并计算每个英文字母在文件中出现的次数。该函数应将(字符:计数)对列表打印到标准输出。

您可以根据需要定义其他“帮助”功能。任何不是英文字母的字符都应该被忽略。这个案子应该被忽略(因此'a'和'A'都算作字母'a')。使用小写字母报告输出。字母应按标准字母顺序排序,并应以格式字母打印,然后是空格,然后是冒号,然后是空格,然后是频率。

enter image description here

我努力将结果与图像相同,我应该只获得字母并忽略其他值。但是,我只能忽略数字。以下是我最喜欢的地方:

def letter_count(filename):
f = open(filename, 'r')
content = f.read().lower()
data = content.split()

mydicts = {}
for letter in data:
    for i in letter:
        count = mydicts.get(i, 0)
        mydicts[i] = count + 1

mydicts_list = mydicts.keys()

for letter in sorted(mydicts_list):
    print(letter, ':', mydicts[letter])

1 个答案:

答案 0 :(得分:0)

你可以使用collections.Counter为你做计数工作:

import string
from collections import Counter

with open(filename) as f:
    char_counts = Counter(c for c in f.read().lower() if c in string.ascii_lowercase)
    for c in sorted(char_counts):
        print(c, char_counts[c])