如何修复python代码中的错误?

时间:2013-11-25 03:24:31

标签: python

def main():
    fname = input("Enter name of file: ")
    with open(fname) as inf:
        animalnames, dates, locations = zip(*[line.strip().split(':') for line in inf])

    d = {}
    for animalname, loc in zip(animalname, locations):
        d.setdefault(animalname, []).append(loc)  

    for k, v in d.items():
       print(k, end='\t')
       print(v.count('loc1'), end='\t')
       print(v.count('loc2'))        

main()

我有一个txt文件名animallog1.txt,其中包含以下内容

a01:01-24-2011:s1 
a03:01-24-2011:s2 
a02:01-24-2011:s2 
a03:02-02-2011:s2 
a03:03-02-2011:s1 
a02:04-19-2011:s2 
a01:05-14-2011:s2 
a02:06-11-2011:s2 
a03:07-12-2011:s1 
a01:08-19-2011:s1 
a03:09-19-2011:s1 
a03:10-19-2011:s2 
a03:11-19-2011:s1 
a03:12-19-2011:s2  

我想使用上面的数据,其格式为animaname:data:location来打印下表:

Number of times each animal visited each station : 
Animal name Station 1 Station 2 
a01         2         1 
a02         0         3 
a03         4         4 
========================================

我已经尝试过,我的代码就是我所拥有的,但它给了我错误

builtins.UnboundLocalError: local variable 'animalname' referenced before assignment

有人可以帮我解决这个问题,这样我就能得到理想的结果。

2 个答案:

答案 0 :(得分:5)

您可能想在此处引用animalnames

for animalname, loc in zip(animalnames, locations):

答案 1 :(得分:0)

在回答第二个问题时,您是否正在搜索有计数的电台的确切字符串名称?

我看到“loc1”和“loc2”被硬编码到提供的片段中,我想知道这是否仅仅是作为示例,或者最终脚本是否使用那些而不是“s1”和“s2”或一些灵活的参数。