python - 将列表中的字符串转换为原始字符串以供重新搜索

标签 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

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

extension = ['\.c','\.h']

但是使用和配置都不方便,我想保持['.c','.h']的输入方式。

有没有办法将它们转换并保存到另一个原始字符串列表以供研究。

最佳答案

  1. 不要使用正则表达式; Python 已经有了 os.path.splitext .

    def skip_check(path):
        return os.path.splitext(path)[1] in extensions
    

    如果您真的必须使用正则表达式,您可以调用re.escape转义所有正则表达式元字符。

  2. 不要将 extension 声明为全局;你没有分配给它所以你不需要。此外,您应该将其称为extensions

关于python - 将列表中的字符串转换为原始字符串以供重新搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9851102/

相关文章:

python - 使用 SQLAlchemy 进行简单验证

python - 允许在 Python 属性中使用特殊字符的原因

python - 有效地将自定义函数应用于 Pandas 中的组

javascript - Blueimp jQuery 文件上传音频/视频限制

regex - .htaccess 强制服务器添加尾部斜杠,带有扩展的链接除外

python - 使用 SQLite3 + Mutagen 优化 Python 代码

python - 如何使用python获取zip文件中所有文件(或给定文件名)的偏移值?

javascript - 仅检查输入字段中使用的数字

php - 查询多个选择器的 XPath

javascript - 在 JavaScript 中任意替换出现的事件