【发布时间】:2010-10-15 10:26:54
【问题描述】:
我有一个这样的重复行的 txt 文件:
主持人:http://de.wikipedia.org 参考:http://www.wikipedia.org 主持人:answers.yahoo.com/ 推荐人:http://www.yahoo.com 主持人:http://de.wikipedia.org 参考:http://www.wikipedia.org 主持人:http://maps.yahoo.com/ 推荐人:http://www.yahoo.com 主持人:http://pt.wikipedia.org 参考:http://www.wikipedia.org 主持人:answers.yahoo.com/ 推荐人:http://www.yahoo.com 主机:mail.yahoo.com 推荐人:http://www.yahoo.com 主持人:http://fr.wikipedia.org 参考:http://www.wikipedia.org 主机:mail.yahoo.com 推荐人:http://www.yahoo.com我正在尝试使用这段代码来遍历这些行,看看有多少主机通过同一个引荐来源网址访问:
dd = {}
for line in open('hosts.txt'):
if line.startswith('Host'):
host = line.split(':')[1].strip('\n')
elif line.startswith('Referer'):
referer = line.split(': ')[1].strip('\n')
dd.setdefault(referer, [0 , host])
dd[referer][0] += 1
print dd
例如来自 wikipedia.org,访问了多少链接或域。
我只想要任何推荐人的第一次出现,对于属于该推荐人的主机,我想要所有这些的总和,忽略已经为同一个推荐人计算的主机,所以基本上每当推荐人和主机是相同的并且它们已经被计算在内,我希望它们被忽略,将“推荐人”作为键,并将唯一主机的总和作为值,如下所示:
{'http://www.wikipedia.org': 3 , 'www.yahoo.com': 2}
我的代码的问题在于它汇总了同一引荐来源的所有重复主机,因为我不知道如何关联主机和引荐行。因此,非常感谢任何提示或帮助。
【问题讨论】:
-
是否总是一个主机行后跟一个Referer行,或者是否存在主机后跟多个引荐人的情况?
标签: python