我是Python和Stack Overflow的新手,所以请原谅我在语法、语法、结构等方面犯的任何错误。
我必须制作一个程序,读取文本文件并提取每封电子邮件的发送时间。然后,这些时间应该存储在字典中,在那里我还可以跟踪按时间发送的最多电子邮件。我被限制只能使用某些函数,因为这是一个coursera练习。
我几乎已经完成了,但我陷入了一个非常奇怪的错误,我似乎无法理解。当把我的时间插入字典时,它会把数字分成两个数字,并分别跟踪它们,所以它没有得到这样的输出:
{'04' : 3, '11' : 6, '10' : 2}
我得到:
{'0' : 5, '1' : 14 , '4' : 3}
我从第一个for循环中取出了代码和结果,而不是给我:
{'16' : 1}
它给了我:
{'1' : 1, '6' : 1}
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
dic = dict()
for line in handle:
if line.startswith('From '):
words = line.split()
time = words[5].split(':')
print(time[0])
for word in time[0]:
dic[word] = dic.get(word, 0 ) + 1
print(dic)
time[0]
是单个字符串,而不是字符串列表,因此循环使用它将导致循环使用字符。这就是为什么我的数字被"拆分"成两个字符的原因。