繁体   English   中英

Python 计数器单词不是字母

[英]Python counter words not letters

我正在尝试创建一个程序,该程序读取文本文件并查找单个单词的数量。 我已经解决了大部分问题,但我一直在努力让计数器像目前那样挑选单词而不是字母。

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})

您的列表理解永远不会被分配,因此不会做任何事情。

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

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

并且我使用了不带参数的str.split()以确保在任意宽度的str.split()进行拆分并在拆分时也包含换行符; 例如,您的Counter()有 65 个不需要在那里的换行符。

在上下文中,更紧凑一点:

from collections import Counter

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

print(x)

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

然后,如果您的代码是:

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"])

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM