代码之家  ›  专栏  ›  技术社区  ›  Imran

类似Python的powershell中的通配符匹配

  •  1
  • Imran  · 技术社区  · 6 年前

    我正在尝试将我的PowerShell脚本转换为python,我仍在学习python。

    $Check_env = "ProjectNameStaging"
    if ($Check_env -like "*Staging") {
        $Environment = "Staging"
    }
    elseif ($Check_env -like "*Production") {
        $Environment = "Production"
    }
    

    我试着使用fnmatch.filter,但是看起来这方面的工作太多了。

    我知道这很容易做到,但是我试图在python中为PowerShell脚本找到最好的、更少的代码行,因为我仍然在想,可以用多少python来代替PowerShell。

    谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  2
  •   oscfri    6 年前

    你可以用 fnmatch.fnmatch 用于通配符匹配。它的用途是 fnmatch.fnmatch(string, pattern) ,如果 string 匹配 pattern . 翻译后的代码将是

    import fnmatch
    
    check_name = "ProjectNameStaging"
    if fnmatch.fnmatch(check_name, "*Staging"):
        environment = "Staging"
    elif fnmatch.fnmatch(check_name, "*Production"):
        environment = "Production"
    

    在这种情况下,您还可以使用 endswith 如果您对没有通配符匹配的解决方案感到满意。顾名思义,这将只检查字符串是否以特定后缀结尾。

    check_name = "ProjectNameStaging"
    if check_name.endswith("Staging"):
        environment = "Staging"
    elif check_name.endswith("Production"):
        environment = "Production"