2014-06-06 69 views
27

如何在Python中使用str.format截斷字符串?它甚至有可能嗎?如何在Python中使用str.format截斷字符串?

有一個在Format Specification Mini-Language提到width參數:

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

但是要指定它顯然只適用於填充,不會截斷:

>>> '{:5}'.format('aaa') 
'aaa ' 
>>> '{:5}'.format('aaabbbccc') 
'aaabbbccc' 

所以它更多的是最小寬度大於寬度真的。

我知道我可以對字符串進行切片,但是我在這裏處理的數據是完全動態的,包括格式字符串和進入的參數。我不能直接去切片。

回答

48

使用.precision代替:

>>> '{:.5}'.format('aaabbbccc') 
'aaabb' 

按照Format Specification Mini-Language的文檔:

精度是表示有多少位應小數點的後顯示的十進制數用'f''F'格式化的浮點值,或者在格式爲'g'的浮點值的小數點前後或'G'對於非數字類型,該字段指示最大字段大小 - 換言之,字段內容將使用多少個字符。整數值不允許使用精度

+0

啊,不知何故,我錯過了。它有竅門,謝謝!接受傳入。 – famousgarkin

+0

是否有內置的顯示截斷字符?像數據被截斷一樣,省略號後綴就像這樣? – ThorSummoner

+0

@ThorSummoner,我認爲你應該手動做。 – falsetru