2013-09-21 102 views
0

我試圖以這種方式格式化字符串,以便我可以重複一個數字序列的任意長度。Python 3字符串格式化,填充字符長度不止一個字符

我一直在看這些例子:How do I format a number with a variable number of digits in Python?String Formatting in Python 3

這裏就是我試圖做的:

print("{0:{1}{2}d}".format(0, 0, 8)) 

將導致在八個漂亮0的成一排,像這樣:00000000 而是試圖從0第二個參數更改爲25

print("{0:{1}{2}d}".format(0, 25, 8)) 

結果在一個單獨的0中,就像它可以在我的控制檯中一樣,而不是25252525所以我認爲問題是使用一個字符串與多個字符作爲填充符而不是單個字符。

回答

1

specification for string formatting是這樣的:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 

在這種情況下,我們只在[0][width]部分感興趣。 [0]是填充數字爲零的可選參數,因此您可以將4格式設置爲'004'[width]指定字段的總寬度。

當你寫:

print("{0:{1}{2}d}".format(0, 0, 8)) 

它變成:

print("{0:08d}".format(0)) 

這是一個0補齊零高達8長度:00000000

然而,你的其他例子:

print("{0:{1}{2}d}".format(0, 25, 8)) 

變爲:

print("{0:258d}".format(0)) 

這是一個0用空格填充(因爲在格式化沒有0)高達258的長度。

我認爲字符串格式不適合解決你的問題。您可以使用除0以外的其他填充字符(使用格式規範中的[fill]選項),但不能超過一個字符。

最簡單的方式得到你想要的東西大概是這樣的:感謝

>>> print((str(25) * 8)[:8]) 
25252525 
+0

噸,我是100%,停留在此的幾個小時! –

相關問題