使用python查找txt文件中字母的出现次数

时间:2015-09-29 18:18:31

标签: python

我需要读取.txt文件中的字母并打印txt文件中的出现次数。到目前为止,我已经能够在一行中打印内容,但有计数问题,有人可以指导。

infile = open('grades.txt')  
content = infile.read() 
for char in content:
        print (char, end=' ')

这将读取txt文件中的字母,但我无法计算出现的次数。

使用下面的计数器给我1

print (char.counter(char))

2 个答案:

答案 0 :(得分:1)

您可以将collections.Counter用于此

Counter({'t': 7,
         ' ': 6,
         's': 5,
         'a': 3,
         'h': 3,
         'e': 3,
         'i': 2,
         'l': 1,
         'r': 1})

实施例

  

这是一个有字母的测试

输出

from string import ascii_letters
with open('grades.txt') as f:
    print(Counter(i for i in f.read() if i in ascii_letters))

或仅包含字母

from string import ascii_letters
d = {}
with open('grades.txt') as f:
    for letter in d.read():
        if letter in ascii_letters:
            if letter in d:
                d[letter] += 1
            else:
                d[letter] = 1

修改
不使用任何其他库,手动方式执行与上面相同的操作:

d = {}
with open('grades.txt') as f:
    for grade in d.read().split():
        if grade in d:
            d[grade] += 1
        else:
            d[grade] = 1

如果您的文件类似于

  

A A + B B-B B + B + A A-B +

然后对上述代码的修改将是

{{1}}

答案 1 :(得分:0)

你走了。希望你的教授会要求你解释你的工作。

grades = open('grades.txt').read().split()
for grade in sorted(set(grades),
                    key=lambda x: ord(x[0])*3-('+'in x)+('-'in x)):
    print ('{} students got {}'.format(grades.count(grade), grade))