通过文件将Python正则表达式中的字符串存储到列表中

时间:2015-02-19 02:32:24

标签: python regex list

我正在使用Python的正则表达式从文件中提取路径,然后尝试将路径附加到单个列表中。路径在文件(options)的不同行中指定,如下所示:

EXE_INC = \
    -I$(LIB_SRC)/me/bMesh/lnInclude \
    -I$(LIB_SRC)/mTools/lnInclude \
    -I$(LIB_SRC)/dynamicM/lnInclude

我的功能是:

def libinclude():
with open('options', 'r') as options:
    for lines in options:
        if 'LIB_SRC' in lines:
            result = []
            lib_src_path = re.search(r'\s*-I\$\(LIB_SRC\)(?P<lpath>\/.*)', lines.strip())
            lib_path = lib_src_path.group(1).split()
            result.append(lib_path[0])
            print result
return (result)

我得到的输出是:

['/me/bMesh/lnInclude']
['/mTools/lnInclude']
['/dynamicM/lnInclude']

但是,正如您所看到的,我得到三个不同的列表,每个列表都是为文件中的一行options获取的。有没有办法在一个列表中获取这三个路径,以便在函数外部可以使用这些值。

1 个答案:

答案 0 :(得分:2)

当然,您每次找到匹配项时都会创建一个新列表。因此,只创建一个列表,并在每次找到匹配时继续附加到列表

def libinclude():
with open('options', 'r') as options:
    result = []
    for lines in options:
        if 'LIB_SRC' in lines:
            lib_src_path = re.search(r'\s*-I\$\(LIB_SRC\)(?P<lpath>\/.*)', lines.strip())
            lib_path = lib_src_path.group(1).split()
            result.append(lib_path[0])
            print result