簡體   English   中英

為什么這個字符串連接格式不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM