2012-09-28 146 views
10

我正在寫一些報告,我想知道如果有一個更簡單的獲得以下行爲方式。嵌套字符串格式

>>> '{:-^60}'.format('Percentage used: {:.2%}'.format(.4)) 
'------------------Percentage used: 40.00%-------------------' 

正如你可以看到我爲中心的文本,然後打印格式化,以百分比的數字。但我在另一個裏面使用格式化函數。如果可能的話,我想在單個函數中做同樣的事情,如下所示。

'$SOMETHING GOES HERE'.format(header = 'Percentage Used:',percentage = .4) 

當然,我正在尋找一個一般的解決方案,這將與所有工作或大部分的格式化選項,而不是僅僅對準

感謝。

+2

好像你的問題本質上是嵌套。想象一下,你想格式化對兩個數字,給每個至少3個字符,並使得整個對至少需要10我看不出你是如何寫的是,除了像'「{10}」 .format( '({3},{3})'。格式(1,2))'。這裏是一樣的東西。這是你需要中心,而不是任何特定元素的整個字符串,所以你必須格式化字符串格式化。 @wim是正確的''中心'可能更具可讀性,但它是等效的。 – abarnert

+0

謝謝,主要是我正在尋找一些想法。我看不出你能做到這一點,但也許還有其他的功能或某些事情可以做到這一點。就像@wim中的一樣。但是我確實認爲我想要做的是受格式函數本身的限制。 – Darkade

+0

如果您正在尋找比內置'format'更強大,更靈活(但複雜)的東西,在討論'format'幾年之前,人們提出了各種替代方案,並編寫了庫實施其中大部分。嘗試搜索PyPI,也許是ActiveState recipe集合(因爲PyPI還在開發過程中發生這種情況),也許你會找到你所需要的東西。 (我沒有任何具體的建議。) – abarnert

回答

8

更具可讀性的選擇可能是str.center

>>> 'Percentage used: {:.2%}'.format(.4).center(60, '-') 
'------------------Percentage used: 40.00%-------------------' 
+2

謝謝,這解決了手頭的問題。然而這不是很一般。但是@abarnert評論說,我想要做的事可能是固有的嵌套 – Darkade