Python计数器字不是字母

时间:2014-03-21 16:14:40

标签: python python-3.x counter

我正在尝试创建一个程序,该程序读入文本文件并查找单个单词的数量。 我已经解决了大部分问题,但我仍然试图让计数器挑选出字母,而不是正在进行的字母。

import collections 

with open ("file.txt" ,"r") as myfile:
    data=myfile.read()
[i.split(" ") for i in data]

x=collections.Counter(data)

print (x)

我的目标是通过空格滑动列表,这会导致每个单词成为列表中的对象。然而,这不起作用。

结果:

Counter({' ': 1062, 'e': 678, 't': 544, 'o': 448, 'n': 435, 'a': 405, 'i': 401, 'r': 398,       's': 329, 'c': 268, 'm': 230, 'h': 216, 'u': 212, 'd': 190, 'l': 161, 'p': 148, 'f': 107, 'g': 75, 'y': 68, '\n': 65, ',': 61, 'b': 55, 'w': 55, 'v': 55, '.': 53, 'N': 32, 'A': 20, 'T': 19, '"': 18, ')': 17, '(': 17, 'C': 17, 'k': 16, "'": 16, 'I': 16, 'x': 15, '-': 14, 'E': 13, 'q': 12, 'V': 10, 'U': 9, ';': 7, '1': 6, 'j': 5, '4': 5, 'P': 5, 'D': 5, '9': 5, 'L': 4, 'z': 4, 'W': 4, 'O': 3, 'F': 3, '5': 3, 'J': 2, '3': 2, 'S': 2, 'R': 2, '0': 1, ':': 1, 'H': 1, '2': 1, '/': 1, 'B': 1, 'M': 1, '7': 1})

2 个答案:

答案 0 :(得分:1)

您的列表理解从未被分配,因此无法执行任何操作。

将拆分文本传递给collections.Counter()

x = collections.Counter(data.split())

我使用不带参数的str.split()来确保你在任意宽度空格上拆分并在拆分时包含换行符;例如,您的Counter()有65个不需要的换行符。

在上下文中更紧凑:

from collections import Counter

with open ("file.txt") as myfile:
    x = Counter(myfile.read().split())

print(x)

答案 1 :(得分:0)

要回答标题,不要用字符串更新计数器,而是设置一个或多个字符串的列表。

那么,如果您的代码是:

from collections import Counter
words_count = Counter("tiger")

记住字符串是一个列表字符。代码如下:

from collections import Counter
words_count = Counter("t", "i", "g", "e", "r")

否则,如果您的代码是:

from collections import Counter
words_count = Counter(["tiger"])

那么,列表元素就是完整的单词。