【问题标题】:Ignore all value other than 'English' word忽略除“英语”单词以外的所有值
【发布时间】:2018-03-15 03:41:45
【问题描述】:

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

您可以根据需要定义其他“帮助”函数。任何不是英文字母的字符都应该被忽略。应该忽略大小写(因此“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])

【问题讨论】:

  • 你的问题和排序的部分有关系吗?
  • 从问题中请求,但我已经解决了这个特定的部分。

标签: python


【解决方案1】:

您可以使用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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多