我不知道什么时候写'if line.startswith('From: ')' and 'if not line.startswith('From')



以下是一些任务中的问题:

编写一个程序来读取mbox-short.txt,并找出谁发送了最多的邮件。该程序查找"发件人"行,并将这些行中的第二个单词作为发送邮件的人。该程序创建了一个Python字典,将发件人的邮件地址映射到文件中出现的次数。生成字典后,程序使用最大循环读取字典,以找到最多产的提交器。

这是适用于此问题的代码之一(在线找到(。有人能解释一下我什么时候必须写"if line.startswitch(("和/或"if not line.startswith((",以及我们是否可以一行接一行地连续使用这两个代码吗?

fname = input("Enter file:")
if len(fname) < 1 : name = "mbox-short.txt"
hand = open(fname)
lst = list()
for line in hand:
if not line.startswith("From:"): continue
line = line.split()
lst.append(line[1])
counts = dict()
for word in lst:
counts[word] = counts.get(word,0) + 1
bigcount = None
bigword = None
for word,count in counts.items(): 
if bigcount is None or count > bigcount:
bigcount = count
bigword = word
print (bigword,bigcount)

就我个人而言,我会使用if line.startswith('FROM'),因为它读起来更好,对任务的目的更有意义。

如果您想根据行的起始字符执行不同的操作,可以同时使用line.startswith()not line.startswith(),但在您的情况下,您应该使用其中一个。

此外,我可能会指出,这不是很Python:

if len(fname) < 1 : name = "mbox-short.txt"

特别是CCD_ 4。相反,我们应该使用这样一个事实,即空字符串是"0";falsy";用Python编写:if not fname:。再一次,这读起来好多了。

最后,你通常不应该像这样直接打开文件:

hand = open(fname)

因为之后你可能会忘记关闭它(你确实这样做了(。您应该使用with语句,而不是PEP 343。

相关内容

最新更新