如何只返回存在的值?

时间:2016-07-01 16:37:22

标签: python return

我正在从大量文件中解析#data1和#data2。有些文件虽然没有,但是当我返回data1时,data2会导致:

UnboundLocalError: local variable 'data2' referenced before assignment

我看了几个其他的问题,我认为像try / except看起来很有希望,但如果其中一个值不存在,我不希望它抛出错误。

我尝试了各种if语句,但得到了相同的UboundLocalError。

if data1 and data2:
    return data1, data2

在尝试返回之前,是否有一种简单的方法可以检查该值是否存在?

data1, data2 = parse_file(filename)

def parse_file(sample):
    for line in open(sample, 'r'):
        if line.startswith('#data1'):
            #Clean up the value
            data1 = line.strip().split('=')[-1]

        elif line.startswith('#data2'):
            #Clean up the value 
            data2 = line.strip().split('=')[-1]

        #Go to next line if it doesn't have either
        else: continue

    return data1, data2

1 个答案:

答案 0 :(得分:3)

data1data2仅根据您的行开头定义。如果您的行从未以'#data2'开头,则data2永远不会被定义。

您可以将它们初始化为None以消除错误:

def parse_file(sample):
    for line in open(sample, 'r'):
        data1, data2 = None, None # Initialize them here if you want them reset for every iteration
        # do stuff