使用 .format 构造表达式时出现 KeyError
KeyError when using .format to structure an expression
我正在使用 .format
编辑属性并将表达式添加到属性。
尝试执行代码时,我会得到一个 KeyError
:
modi_expr = """
if (frame < 6) {
{0}.frameExtension=6;
}
else if (frame > 73) {
{0}.frameExtension=73;
}
else{
{0}.frameExtension=frame;
}
""".format('planeShape2')
而如果我按如下方式使用 %
,虽然它有效,但它需要我写 3 次相同的变量。
expr_to_use = """
if (frame < 6) {
%s.frameExtension=6;
}
else if (frame > 73) {
%s.frameExtension=73;
}
else{
%s.frameExtension=frame;
}
""" % ('planeShape2', 'planeShape2', 'planeShape2')
如果使用 %
是可行的方法,有没有一种方法可以让我只写一次?如果没有,是否有更好的替代方法来解决这个问题?
使用 {{
和 }}
转义 non-formatting 大括号。
来自文档:https://docs.python.org/3/library/string.html#format-string-syntax
If you need to include a brace character in the literal text, it can be escaped by doubling: {{
and }}
.
modi_expr = """
if (frame < 6) {{
{0}.frameExtension=6;
}}
else if (frame > 73) {{
{0}.frameExtension=73;
}}
else{{
{0}.frameExtension=frame;
}}
""".format('planeShape2')
print(modi_expr)
或者你也可以使用 f-strings for python >= 3.6
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;
}
我正在使用 .format
编辑属性并将表达式添加到属性。
尝试执行代码时,我会得到一个 KeyError
:
modi_expr = """
if (frame < 6) {
{0}.frameExtension=6;
}
else if (frame > 73) {
{0}.frameExtension=73;
}
else{
{0}.frameExtension=frame;
}
""".format('planeShape2')
而如果我按如下方式使用 %
,虽然它有效,但它需要我写 3 次相同的变量。
expr_to_use = """
if (frame < 6) {
%s.frameExtension=6;
}
else if (frame > 73) {
%s.frameExtension=73;
}
else{
%s.frameExtension=frame;
}
""" % ('planeShape2', 'planeShape2', 'planeShape2')
如果使用 %
是可行的方法,有没有一种方法可以让我只写一次?如果没有,是否有更好的替代方法来解决这个问题?
使用 {{
和 }}
转义 non-formatting 大括号。
来自文档:https://docs.python.org/3/library/string.html#format-string-syntax
If you need to include a brace character in the literal text, it can be escaped by doubling:
{{
and}}
.
modi_expr = """
if (frame < 6) {{
{0}.frameExtension=6;
}}
else if (frame > 73) {{
{0}.frameExtension=73;
}}
else{{
{0}.frameExtension=frame;
}}
""".format('planeShape2')
print(modi_expr)
或者你也可以使用 f-strings for python >= 3.6
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;
}