2015-09-05 17 views
1

是否可以在格式說明符中使用格式()中的變量 - Python中的函數?我有下面的代碼,我需要VAR等於field_size:在Python中使用格式()函數中的變量

def pretty_printer(*numbers): 
    str_list = [str(num).lstrip('0') for num in numbers] 

    field_size = max([len(string) for string in str_list]) 

    i = 1 
    for num in numbers: 
    print("Number", i, ":", format(num, 'VAR.2f')) # VAR needs to equal field_size 

回答

3

可以使用str.format() method,它可以讓你插其他變量的東西像寬度:

'Number {i}: {num:{field_size}.2f}'.format(i=i, num=num, field_size=field_size) 

每個{}是佔位符,填充關鍵字參數中的命名值(您也可以使用編號的位置參數)。可選的:之後的部分給出了格式(基本上,format()函數的第二個參數),並且可以使用更多的{}佔位符來填寫參數。

使用編號的位置應該是這樣的:

'Number {0}: {1:{2}.2f}'.format(i, num, field_size) 

但你也可以混合使用兩種或選擇不同的名稱:

'Number {0}: {1:{width}.2f}'.format(i, num, width=field_size) 

如果省略號碼和姓名,這些字段是自動因此以下相當於前面的格式:

'Number {}: {:{width}.2f}'.format(i, num, width=field_size) 

請注意,整個字符串是一個模板,所以像Number字符串和冒號這樣的東西就是模板的一部分。

您需要注意的是,字段大小包含的小數點,但是;您可能需要調整大小以添加3個額外字符。

演示:

>>> i = 3 
>>> num = 25 
>>> field_size = 7 
>>> 'Number {i}: {num:{field_size}.2f}'.format(i=i, num=num, field_size=field_size) 
'Number 3: 25.00' 
+0

感謝您一個明確的答案!你能不能也請示出一個帶有編號位置參數的簡單例子? –

+0

@AliMustafa:增加了一些例子。 –

相關問題