以下是一些作业中的问题:
编写一个程序,通读mbox-short.txt,找出谁发送的邮件数量最多。程序查找“发件人”行,并将这些行中的第二个字作为发送邮件的人。该程序创建一个Python字典,将发件人的邮件地址映射到文件中出现的次数计数。字典生成后,程序使用最大循环读取字典,以查找最多的提交者
这是解决此问题的代码之一(在线找到)。有人能解释一下我什么时候必须写“if line.startswith()”和/或“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:
…尤其是
len(fname) < 1
。相反,我们应该使用Python中的空字符串是“falsy”这一事实,只需写:if not fname:
。再一次,这读起来好多了最后,您通常不应该像这样直接打开文件:
因为之后你可能会忘记关上它(你已经关上了)。您应该使用
with
语句来代替PEP 343相关问题 更多 >
编程相关推荐