我试图从文本文件中创建一个单词字典,然后计算每个单词的实例,并能够在字典中搜索单词并接收其计数,但我处于停顿状态。我有最大的困难,使文本文件字小写和删除他们的标点符号,因为否则我的计数将关闭。有什么建议吗?
f=open("C:\Users\Mark\Desktop\jefferson.txt","r")
wc={}
words = f.read().split()
count = 0
i = 0
for line in f: count += len(line.split())
for w in words: if i < count: words[i].translate(None, string.punctuation).lower() i += 1 else: i += 1 print words
for w in words: if w not in wc: wc[w] = 1 else: wc[w] += 1
print wc['states']
这听起来像是
collections.Counter
的工作:结果:
当然,这将“自由”和“这个”算作单词(注意单词中的标点符号)。此外,它还将“The”和“The”视为不同的单词。此外,处理整个文件可能会丢失非常大的文件。
这是一个忽略标点和大小写的版本,在大文件上更节省内存。
结果:
参考文献:
有几点:
在Python中,始终使用以下构造读取文件:
如果您使用
f.read().split()
,那么它将读取到文件的末尾。之后,你需要回到开始:第三,你所做的部分:
您不需要在Python中保留计数器。你可以简单地。。。
但是,您甚至不需要在这里检查
i < count
。。。你可以简单地做:最后,如果您只想计算
states
,而不想创建一个完整的项字典,请考虑使用filter。。。。最后一件事。。。
如果文件很大,不宜一次把每个字都记下来。考虑逐行更新
wc
字典。与其做你做的事,你可以考虑:相关问题 更多 >
编程相关推荐