我想计算发送邮件的不同大学,我使用了以下代码:
fname = raw_input('Enter the file name: ')
try:
fhan = open(fname)
except:
print 'File cannot be opened:', fname
count = 0
sum = 0
for i in fhan:
if i.startswith('From'):
x=i.find('@')
y=i.find(' ',x)
str1=i[x+1:y].strip()
print str1
count=count+1
print count
最终输出给了我句柄,但我可以删除重复的句柄,如果我打印uct.ac.za它不应该打印并再次计数
链接文件:www.py4inf.com/code/mbox-short.txt
答案 0 :(得分:1)
您可以将句柄附加到列表中而不是打印它。然后在set
中转换该列表。在一个集合中没有重复的元素,所以你将获得一组独特的大学。最后,您可以遍历集合并打印大学。
对于count
,您可以使用len
函数来计算集合中的大学。
这是修改后的代码: -
fname = raw_input('Enter the file name: ')
try:
fhan = open(fname)
except:
print 'File cannot be opened:', fname
universities = []
for i in fhan:
if i.startswith('From'):
x=i.find('@')
y=i.find(' ',x)
str1=i[x+1:y].strip()
universities.append(str1)
universities = set(universities)
for i in universities:
print i
print len(universities)