Python 使用.format构造表达式时出现KeyError

Python 使用.format构造表达式时出现KeyError,python,maya,Python,Maya,我正在使用.format编辑表达式并将其添加到属性中。 在尝试执行代码时,我将收到一个KeyError: modi_expr = """ if (frame < 6) { {0}.frameExtension=6; } else if (frame > 73) { {0}.frameExtension=73; } else{ {0}.frameExtension=frame; } """.

我正在使用.format编辑表达式并将其添加到属性中。 在尝试执行代码时,我将收到一个KeyError:

modi_expr = """
    if (frame < 6) {
        {0}.frameExtension=6;
    }
    else if (frame > 73) {
        {0}.frameExtension=73;
    }
    else{
        {0}.frameExtension=frame;
    }
""".format('planeShape2')
如果使用%是一种方法,有没有一种方法可以让我写一次?如果没有,是否有更好的替代方法来解决这个问题?

使用{{和}}来转义非格式化大括号

从文档中:

如果需要在文本中包含大括号字符,可以通过加倍:{{和}}对其进行转义

或者您也可以对python>=3.6使用f字符串

var = 'planeShape2'

modi_expr = f"""
    if (frame < 6) {{
        {var}.frameExtension=6;
    }}
    else if (frame > 73) {{
        {var}.frameExtension=73;
    }}
    else{{
        {var}.frameExtension=frame;
    }}
"""
输出将是

 if (frame < 6) {
        planeShape2.frameExtension=6;
    }
    else if (frame > 73) {
        planeShape2.frameExtension=73;
    }
    else{
        planeShape2.frameExtension=frame;
    }

太好了,谢谢!但是,我可以问一下,如果使用双大括号,它们通常用于“基于mel”的命令吗?我添加了对文档的引用,它们用于转义格式字符串中的单大括号,也不确定什么是基于mel的命令?它与mel无关。{{是纯粹的pythonic当你使用格式时,你可能会尝试使用传统的\但它不适用于格式。@DeveshKumarSingh,mel是maya软件中的一种语言,他正在用python修改一个基于mel的脚本,其中{用于缩进。出于好奇,为什么不直接使用python而不是mel?
var = 'planeShape2'

modi_expr = f"""
    if (frame < 6) {{
        {var}.frameExtension=6;
    }}
    else if (frame > 73) {{
        {var}.frameExtension=73;
    }}
    else{{
        {var}.frameExtension=frame;
    }}
"""
 if (frame < 6) {
        planeShape2.frameExtension=6;
    }
    else if (frame > 73) {
        planeShape2.frameExtension=73;
    }
    else{
        planeShape2.frameExtension=frame;
    }