浏览一个文本文件并列出有多少个单词以。。。b、 。。。。c、 。。。。d、 。。。

2024-09-27 07:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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、 是的。。等。。我得到一个错误,我不知道这意味着什么。你知道吗

Traceback (most recent call last):

File "C:/Users/Andy/Downloads/counting_letters.py", line 5, in

di[word[0]]+=1

KeyError: ' '

有人能告诉我怎么解决这个问题吗?你知道吗


Tags: inimport程序txtforstringasciiopen
2条回答

KeyError表示键' '不在词典中。你知道吗

word[0]' '(空格字符)。你知道吗

你确定吗

for word in alice:

实际上是重复单词?你知道吗

就像@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())

同样有效。你知道吗

相关问题 更多 >

    热门问题