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:''
有人可以告诉我如何解决这个问题吗?
答案 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())
也可以。