0

当我定义一个函数时,它不返回任何值。但是,我已经在 IDLE 中单独验证了该函数的代码,并且可以正常工作。问题出在哪里?该文件真正包含我想要获得的价值。当我使用调试器时,单步执行此函数,它会从“for row 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 AC)是这样的,抱歉信息不具体:

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。

4

1 回答 1

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]
于 2013-08-19T16:17:23.540 回答