为什么此字符串串联格式不起作用?

时间:2019-06-27 15:04:54

标签: python

code = "+"
message = "{} " + code + "{} = {}".format('1', '2', '3')

print(message)

我认为这应该打印1+2=3,但实际上它可以打印出来:

{} +1 = 2

那是为什么?这应该与:

message = "{} + {} = {}".format('1', '2', '3'),在这种情况下可以正常工作。

6 个答案:

答案 0 :(得分:2)

因为format方法仅应用于双引号内的最后一个字符串,例如"{} = {}"

如果想要整个字符串结果,则应仅对一个字符串调用format方法:

message = "{0} {1} {2} = {3}".format('1', code, '2', '3')
print(message)
# '1 + 2 = 3'

看看这个page,它对于字符串格式非常有用。

答案 1 :(得分:2)

此处的格式函数是在“ {} = {}”字符串上而不是在整个消息字符串上调用的,因此按原样打印+之前的“ {}”。 要解决此问题,只需将消息行更改为

message = ("{} " + code + "{} = {}").format('1', '2', '3')

答案 2 :(得分:1)

.format('1', '2', '3')应用于串联中的最后一个字符串("{} = {}"),而不是整个字符串。将括号放在串联周围,并在其上加上.format(),它将产生您期望的结果。

答案 3 :(得分:1)

上述人士的说法是正确的。你可以做这样的事情

def createMessage(a,b ,c):
    code = '+'
    mes1 = "{}".format(a)
    mes2 = "{} = {}".format(b,c)
    message = mes1 + code + mes2
    print(message)


createMessage(1,2,3)

答案 4 :(得分:0)

原因是格式仅适用于双引号("{} = {}")之间的最后一个字符。因此,仅将数字三丢弃,并将代码变量替换为其值。

答案 5 :(得分:0)

code = "+"
message = ("{} " + code + "{} = {}").format('1', '2', '3')
print(message)

上面的代码应该起作用。这是因为第一个“ {}”被视为一个单独的字符串, “ {} = {}”。format('1','2','3')仅针对格式进行评估。 因此输出错误