浏览一个文本文件并列出有多少单词以...... b ... c .... d ...等开头

时间:2013-12-16 18:57:01

标签: python python-2.7

import string
alice = open('alice_in_wonderland.txt')
di={}.fromkeys(string.ascii_letters,0)
for word in alice:
    di[word[0]]+=1

print di    

我正在尝试编写一个程序,通过一个文本文件,并产生多少单词开头的字母a ... b ... c ..等..我收到一个错误,我不知道这意味着什么。

  

追踪(最近一次呼叫最后一次):

     

文件“C:/Users/Andy/Downloads/counting_letters.py”,第5行,

     

二[字[0]] + = 1

     

KeyError:''

有人可以告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

KeyError表示密钥' '不在您的字典中。

word[0]' '(空格角色)。

你确定吗

for word in alice:

实际上是在迭代单词?

答案 1 :(得分:0)

像@JacobKrall一样说,做到这一点:

for line in file_handle:

迭代,而不是单词。如果你碰巧每行都有一个单词,你的方法可能会奏效,但是唉。

尝试使用collection.Counter而不是滚动自己的计数器。

from collections import Counter
with open('myfile') as f:
    c = Counter(word[0].lower() for word in f.read().split())

或者,如果您的输入文件很大(在您的情况下不是这样)并且将其全部读入内存是禁止的,则替代形式:

with open('myfile') as f:
    c = Counter()
    for line in f:
        c.update(word[0].lower() for word in line.split())

也可以。