将列表中的字符串转换为re.search的原始字符串

oys*_*yss 1 python regex

我需要在搜索目录时检查文件扩展名.

如果使用re进行匹配工作.那些'.' 被解释为正则表达式'.'

我的代码:

extension = ['.c','.h']
path = 'foo\bar\foobar.c'

def skipCheck(path):
    global extension 
    skip = True
    for i in extension :
        if(re.search(i,path)):
            skip = False
return skip
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用反斜杠来做到这一点.

extension = ['\.c','\.h']
Run Code Online (Sandbox Code Playgroud)

但它不容易使用和配置.我想保持['.c','.h']输入样式.

有没有办法将它们转换并保存到re.search的另一个原始字符串列表中.

Kat*_*iel 6

  1. 不要使用regexen; Python已经有了os.path.splitext.

    def skip_check(path):
        return os.path.splitext(path)[1] in extensions
    
    Run Code Online (Sandbox Code Playgroud)

    如果你真的必须使用正则表达式,你可以调用re.escape以逃避所有正则表达式元字符.

  2. 不要宣布extension全球; 你没有分配它,所以你不需要.另外,你应该打电话给它extensions.