2015-11-05 31 views
1

例如,我可以這樣做:Python - 使用格式字符串長度變量而不是固定的嗎?

"%.2s" % ('aaa') 
'aa' 

"%.1s" % ('aaa') 
'a' 

但我怎麼能作出這樣的部分好像.2變量,這樣我就可以通過任何數量的,它會相應的格式,就像如果我會通過類似:

"%.%ss %" (1, 'aaa') # Pseudo code 
'a' 
+0

竟被我看看了的String.format方法:https://docs.python.org/2/library/ string.html#format-specification-mini-language – Netwave

回答

4

指定寬度爲*和實際寬度將從下一個位置參數採取:

"%.*s" % (1, 'aaa') 

str.format() method更靈活的是,你可以插值任何參數,而不僅僅是寬度:

"{:.{width}s}".format('aaa', width=1) 

演示:

>>> "%.*s" % (1, 'aaa') 
'a' 
>>> "%.*s" % (2, 'aaa') 
'aa' 
>>> "{:.{width}s}".format('aaa', width=1) 
'a' 
>>> "{:.{width}s}".format('aaa', width=2) 
'aa' 

額外的佔位符可用於任何元素組成的格式規範:

>>> "{:{align}{width}s}".format('aaa', align='<', width=4) 
'aaa ' 
>>> "{:{align}{width}s}".format('aaa', align='>', width=4) 
' aaa' 
+0

不錯。謝謝。兩種解決方案都很好,儘管在這種情況下第一個解決方案看起來更具可讀性(至少對我而言)。 – Andrius

0

使用format如下:

>>> outputNumber=2 
>>> '{:.{}}'.format('MyString', outputNumber) 
'My' 
>>> outputNumber=5 
>>> '{:.{}}'.format('MyString', outputNumber) 
'MyStr' 
>>> 
相關問題