Python 命名参数在具有条件逻辑的字符串中不起作用
我有一个多行字符串,带有一个内嵌if条件,如下所示:Python 命名参数在具有条件逻辑的字符串中不起作用,python,Python,我有一个多行字符串,带有一个内嵌if条件,如下所示: my_string= """ Hello my name is """ + ('John' if client == "j123" else 'Mary') + """ Good bye. """ 但是,当我插入一个命名参数时,它似乎没有正确地处理它。通过一些测试,我发现从字符串中删除IF将允许命名参数工作 my_string= """ Hello my name is """ + ('
my_string= """
Hello my name is """ + ('John' if client == "j123" else 'Mary') + """
Good bye. """
但是,当我插入一个命名参数时,它似乎没有正确地处理它。通过一些测试,我发现从字符串中删除IF将允许命名参数工作
my_string= """
Hello my name is """ + ('John' if client == "j123" else 'Mary') + """
%(msg_key)s
Good bye. """ % {"msg_key" : "Additional msg"}
这不起作用有什么具体原因吗?你的意思是:
my_string=”“”
您好,我的名字是“”+['John'如果客户=='j123'或者'Mary'][0]+“””
再见
使用f字串会更有效:
my_string=f”“”
你好,我的名字是{'John'如果客户=='j123'或者'Mary'}
{msg_key}
再见。格式(msg_key=“附加msg”)
msg_key不是变量,它只是标识字符串中的占位符
这项工作:
my_string= """
Hello my name is """ + ('John' if client == "j123" else 'Mary') + """
%(msg_key)s
Good bye. """ % {"msg_key" : "Additional msg"}
解决方案是选择一种更干净的方法,如下所示,将任何逻辑转移到命名参数,而不是让它们保持一致
my_string= """
Hello my name is {name}
{something_else}
Good bye. """.format(
name=("John" if client_code == "j" else "Mary"),
something_else="Additional Message"
)
thnx这是一个打字错误。我不知道你可以用花括号写if条件。这种技术有特别的名称吗?许多的thanks@test,这是一个普通的python内联if语句,您可以将结果组合在任何f字符串的花括号中。