[英]Why doesn't this string concatenation formatting work?
code = "+"
message = "{} " + code + "{} = {}".format('1', '2', '3')
print(message)
我認為這應該打印1+2=3
,但實際上它打印出來:
{} +1 = 2
這是為什么? 這應該與:
message = "{} + {} = {}".format('1', '2', '3')
,在這種情況下它按預期工作。
因為format
方法只應用於雙引號內的最后一個字符串,例如"{} = {}"
。
如果你想要整個字符串的結果,你應該只對一個字符串調用format
方法:
message = "{0} {1} {2} = {3}".format('1', code, '2', '3')
print(message)
# '1 + 2 = 3'
看看這個頁面,它對字符串格式化非常有用。
這里的格式函數是在 "{}={}" 字符串上調用的,而不是在整個消息字符串上調用,因此 + 之前的 "{}" 會按原樣打印。 要更正此問題,只需將消息行更改為
message = ("{} " + code + "{} = {}").format('1', '2', '3')
.format('1', '2', '3')
應用於連接中的最后一個字符串( "{} = {}"
),而不是整個字符串。 將括號放在連接周圍並將.format()
添加到其中,它應該會產生您期望的結果。
樓上幾位說的都是對的。 你可以做這樣的事情
def createMessage(a,b ,c):
code = '+'
mes1 = "{}".format(a)
mes2 = "{} = {}".format(b,c)
message = mes1 + code + mes2
print(message)
createMessage(1,2,3)
原因是該格式僅適用於雙引號 ( "{} = {}"
) 之間的最后一個字符。 因此,數字 3 被簡單地丟棄,代碼變量被替換為其值。
code = "+"
message = ("{} " + code + "{} = {}").format('1', '2', '3')
print(message)
上面的代碼應該可以工作。 這是因為,首先將 "{}" 視為單獨的字符串, "{} = {}".format('1', '2', '3')僅針對格式進行評估。 因此錯誤的輸出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.