我正在进行Coursera python练习并且无法编写代码。
问题如下:
编写一个程序来读取mbox-short.txt并找出谁发送了最多的邮件消息。该计划寻找' From'行,并将这些行的第二个单词作为发送邮件的人。
该程序创建一个Python字典,将发件人的邮件地址映射到它们在文件中出现的次数。在生成字典之后,程序使用最大循环读取字典以找到最多产的提交者。 示例文本文件位于以下行:http://www.pythonlearn.com/code/mbox-short.txt
预期的输出应为:
cwen@iupui.edu 5
这是我的代码:
name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
name="mbox-short.txt"
handle=open(name)
text=handle.read()
for line in handle:
line=line.rstrip()
words=line.split()
if words==[]: continue
if words[0]!='From':continue
words2=words[1]
words3=words2.split()
counts=dict()
for word in words3:
counts[word]=counts.get(word,0)+1
bigcount=None
bigword=None
for key,val in counts.items():
if val>bigcount:
bigword=key
bigcount=val
print bigword,bigcount
我的输出是: cwen@iupui.edu 1
我的代码中的错误在哪里?
答案 0 :(得分:0)
这是你需要的代码,你没有在列表中存储words2输出,并且正如评论中提到的那样,你也以错误的方式复制文件。
希望这会对你有所帮助。
name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
name="mbox-short.txt"
handle=open(name)
words3 = []
for line in handle:
line=line.rstrip()
words=line.split()
if words==[]: continue
if words[0]!='From':continue
words2=words[1]
words3.append(words2.split()[0])
# print words
counts=dict()
for word in words3:
counts[word]=counts.get(word,0)+1
bigcount=None
bigword=None
for key,val in counts.items():
if val>bigcount:
bigword=key
bigcount=val
print bigword,bigcount