我正在使用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
获取的。有没有办法在一个列表中获取这三个路径,以便在函数外部可以使用这些值。
答案 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