【发布时间】:2017-11-03 16:37:23
【问题描述】:
提示:
编写一个程序,根据哪一天对每封邮件进行分类 提交完成的那一周。为此,请查找开始的行 使用“from”,然后查找第三个单词并保持运行计数 一周中的每一天。在程序结束时打印出 字典的内容(顺序无关紧要)。
Python 3 中的代码:
fname = input('enter file name:')
fhand = None
days = dict()
try:
fhand = open(fname)
except:
print(fname, 'is not a file thank you have a nice day and stop trying to ruin my program\n')
exit()
for line in fhand:
sline = line.split()
if line.startswith('From'):
print (sline)
day = sline[2]
if day not in days:
days[day] = 1
else:
days[day] += 1
print(days)
问题:
['From', 'stephen.marquard@uct.ac.za', 'Sat', 'Jan', '5', '09:14:16', '2008']
**['From:', 'stephen.marquard@uct.ac.za']**
Traceback (most recent call last):
File "C:\Users\s_kestlert\Desktop\Programming\python\chap9.py", line 13, in <module>
day = sline[2]
IndexError: list index out of range
文件:http://www.py4inf.com/code/mbox-short.txt
为什么.split 将线路缩减为仅[0] 和[1]?
我该如何规避这个问题?
【问题讨论】:
-
能否提供示例文件内容?
-
您确定这是您执行的代码吗?因为
print似乎表明sline有7 个元素,并且您在下一行进行索引。 -
看起来您有一行仅由
From: stephen.marquard@uct.ac.za组成。拆分时,结果列表包含两个元素,因此有效索引为 0 和 1。您不能在只有两个元素的列表上使用索引 2。 -
“Acting up”并不是一个真正的技术术语..
标签: python python-3.x python-2to3