是否可以在串列中使用字串格式化方法?
例如
list1 = ["{0:^8}", "{1:^8}", "{2:^8}".format(7, 8, 9)]
但是每當我嘗試運行它時,它都會給出輸出,因為它只更改了最后一個。
['{0:^8}', '{1:^8}', ' 9 ']
如何格式化完整串列?
uj5u.com熱心網友回復:
您只是格式化最后一個字串。您只需要遍歷數字,并且由于所有數字的格式規范都相同,因此您可以重復使用它*。
>>> ['{:^8}'.format(x) for x in (7, 8, 9)]
[' 7 ', ' 8 ', ' 9 ']
* 與每個不同的規范相反,您可以使用zip,例如
[spec.format(x) for spec, x in zip(specs, numbers)]
uj5u.com熱心網友回復:
您只呼叫str.format串列中的一個字串。你的代碼作業正常,不是按照你想要的方式,而是按照你編碼的方式。
所以實際上只有兩種明確的方法可以做到這一點。
您的值是7, 8, 9讓我們將它們存盤到變數中。然后我們可以對它們使用 map 到資料,我們暗示是每個字串的格式:
>>> vals = 7, 8, 9
>>> data = ["{:^8}", "{:^8}", "{:^8}"]
>>> list(map(str.format, data, vals))
[' 7 ', ' 8 ', ' 9 ']
或者使用f-strings 而不data先暗示,因為每個值的所有格式都是相同的:
>>> vals = 7, 8, 9
>>> [f'{v:^8}' for v in vals]
對于另一種選擇,我想您也可以str.format在串列理解中使用,但這并不像f-strings那樣干凈或花哨:
>>> vals = 7, 8, 9
>>> ['{:^8}'.format(v) for v in vals]
uj5u.com熱心網友回復:
您可以使用f-strings串列理解來獲取輸出 -
output = [f'{i:^8}' for i in [7, 8, 9]]
print(output)
在您的代碼中,.formatis 用于最后一個元素,因此只會對其進行格式化。
但是,在這里,所有專案都被格式化,然后添加到串列中。
uj5u.com熱心網友回復:
該format函式僅適用于一個字串。因此,如果您有多個字串,那么您需要通過回圈或單獨對每個字串呼叫 format 方法。
"{} {} {}".format(7,8,9)因為它是一個完整的字串而作業,但"","","{}".format(7,8,9)將最后一個值應用于最后一個字串中的該占位符,因為它只被呼叫。
uj5u.com熱心網友回復:
這是一個簡單的修復。您希望單獨格式化所有元素,這需要單獨的格式呼叫。實際上,您希望將字串元素作為它們自己的元素在串列中使用逗號分隔在引號中的每個專案。這種方式可以對每個專案進行格式化。
# You need to adjust your string quotations like this
list1=["{0:^8},{1:^8},{2:^8}".format(7,8,9)]
# Check the results of the adjustment
for item in list1:
print(item)
uj5u.com熱心網友回復:
list1=["{0:^8}","{1:^8}","{2:^8}"] #Insert special characters into a string
str1='|'.join(list1)
list2=str1.format(7,8,9).split('|')
print(list2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/346101.html
下一篇:在回圈中向資料框添加行
