函数不返回任何值

时间:2013-08-19 16:02:15

标签: python csv

当我定义一个函数时,它不返回任何值。但是,我已经在IDLE中单独验证了该函数的代码,并且它可以工作。问题出在哪儿?该文件真正包含我想要获得的值。当我使用调试器时,执行此函数,它会从'for reader in reader:'直接跳到最后。我的问题在哪里?我的代码:

import re,csv

F=open('file.csv')

# `......`

def prog_rownum(Ref,s):

    P=[]
    reader=csv.reader(s)
    for row in reader:
        m=re.match(Ref,','.join(row))
        if m:
            P.append(reader.line_num)
    return P
# `......`

P1=prog_rownum('U16',F)

# `......`

文件中的数据(colnum A-C)就是这样,对于非特定信息感到抱歉:

InstPin       Netlist   RefDes

U16:0:NMI       0   U16

U16:0:O\E\      0   U16

U16:0:R\S\T\    0   U16

U16:0:REF_FREQ  0   U16

U16:0:REFCLK_C  0   U16

U16:0:REFCLK_N  0   U16

U16:0:REFCLK_P  0   U16

U16:0:RX_N0     0   U16

U16:0:RX_N1     0   U16

U16:0:RX_N10    0   U16

U16:0:RX_N11    0   U16

U16:0:RX_N12    0   U16

U16:0:RX_N13    0   U16

我只想返回所需的rownum,其中包含我需要的信息。

1 个答案:

答案 0 :(得分:1)

如果没有更多详细信息很难说,但以下内容与您的功能相同且更清晰,可能会解决您的问题:

def prog_rownum(filename, ref):
    """ Return a list with the line numbers where ref appears in filename """
    with open(filename) as f:
        return [line_num for line_num, line in enumerate(f) 
                if line.startswith(ref)]    # alternatively "if ref in line" checks anywhere

测试
>>> print prog_rownum('file.csv', 'U16')
[2, 5, 7]