我需要读取.txt文件中的字母并打印txt文件中的出现次数。到目前为止,我已经能够在一行中打印内容,但有计数问题,有人可以指导。
infile = open('grades.txt')
content = infile.read()
for char in content:
print (char, end=' ')
这将读取txt文件中的字母,但我无法计算出现的次数。
使用下面的计数器给我1
print (char.counter(char))
答案 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))