为了计算每个字符在文本文件中出现的次数,您应该使用以下代码:
from collections import Counter
def get_char_count_from_file(file_path):
with open(file_path) as f:
return Counter(f.read())
例子:
>>> get_char_count_from_file('C:/Python27/README.txt')
Counter({' ': 10634, 'e': 4067, 't': 3269, 'i': 2799, 'o': 2791, 'n': 2438, 's': 2307, 'a': 2283, 'r': 2183, 'l': 1848, 'h': 1469, 'u': 1278, '\n': 1229, 'd': 1225, 'c': 1196, '-': 1116, 'p': 969, 'm': 899, 'f': 846, 'y': 791, '.': 770, 'b': 697, 'g': 672, 'w': 488, ',': 408, '/': 326, 'k': 288, 'v': 286, 'T': 250, 'S': 223, 'P': 212, 'I': 198, 'C': 191, 'x': 177, '"': 176, ')': 176, '(': 162, '=': 125, ':': 119, 'O': 115, 'E': 108, 'D': 102, '2': 95, 'R': 95, 'A': 94, 'M': 94, '_': 89, 'N': 85, 'L': 84, "'": 84, '1': 78, 'X': 71, '0': 69, 'U': 65, 'G': 63, '4': 53, 'H': 53, 'B': 49, '3': 48, '+': 44, 'W': 42, 'F': 40, '5': 39, 'q': 36, 'Y': 35, '6': 31, 'z': 30, ';': 25, 'V': 22, 'j': 22, '8': 21, '9': 18, '$': 17, '@': 16, '7': 15, '<': 13, '>': 13, '\\': 11, '!': 11, '*': 10, '{': 8, '}': 8, 'K': 7, '`': 6, 'J': 6, '#': 5, 'Q': 5, '&': 4, '?': 3, 'Z': 3, '~': 3, '[': 2, '\t': 2, ']': 2})
你可以如何使用它:
>>> for k,v in sorted(Counter('xli uymgo fvsar jsb').items()):
print k, v
3
a 1
b 1
f 1
g 1
i 1
j 1
l 1
m 1
o 1
r 1
s 2
u 1
v 1
x 1
y 1