在Python中的if语句中的列表上使用迭代器

时间:2015-02-20 05:23:11

标签: python list if-statement filter

我正在使用一个函数来读取特定文件,在这种情况下是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:
    result = []
    for lines in options:
        if 'LIB_SRC' in lines and not 'mTools' 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
return (result)

现在您可以看到,我查找了mTools的行并使用not 'mTools' in lines进行过滤。但是,当我有很多这样的字符串时,如何过滤?比方说,我想过滤包含mToolsdynamicM的行。是否可以将这些字符串放在列表中,然后在lines语句中对if访问该列表的元素?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用内置函数all()

present = ['foo', 'bar', 'baz']
absent = ['spam', 'eggs']
for line in options:
    if all(opt in line for opt in present) and all(
           opt not in line for opt in absent):
       ...

另请参阅:any()